Steve Litt <sl...@troubleshooters.com> writes:

[...]


> ========================================================
> #!/bin/sh
> if test "$#" == "0"; then
>   lineno="1"
> else
>   lineno=$1
> fi
>
> ip link | \
>   cut -d ' ' -f2 | \
>   grep ^w | \
>   sed -e "s/:\s*$//" | \
>   head -n $lineno | \
>   tail -n 1
>
> ========================================================

The ip command has an -o flag for generating output which is more easily
parseable by program (-o means 'oneline'). This means the same can be
accomplished with

----
#!/bin/sh
lineno=${1:-1}
ip -o link | awk "\$2 ~ /^w/{ if (++nr == $lineno) print gensub(\":\", \"\", 1, 
\$2) }"
----

awk is generally the easiest to use tool if records made up of lines are
supposed to be split into whitespace-separated fields. The code can be
simplified somewhat by not using the awk gensub function to get rid of
the trailing : but the tr command in 'delete characters' mode.

----
#!/bin/sh
lineno=${1:-1} 
ip -o link | awk "\$2 ~ /^w/{ if (++nr == $lineno) print \$2 }" | tr -d :
----
_______________________________________________
Dng mailing list
Dng@lists.dyne.org
https://mailinglists.dyne.org/cgi-bin/mailman/listinfo/dng

Reply via email to