我有一些输入(例如在OpenBSD上运行ifconfig run0 scan
的结果),其中一些字段由空格分隔,但某些字段本身包含空格(幸运的是,这样包含空格的字段总是被引号括起来的)。
我需要区分引号内的空格和分隔符空格。想法是将引号内的空格替换为下划线。
示例数据:
%cat /tmp/ifconfig_scan | fgrep nwid | cut -f3
nwid Websense chan 6 bssid 00:22:7f:xx:xx:xx 59dB 54M short_preamble,short_slottime
nwid ZyXEL chan 8 bssid cc:5d:4e:xx:xx:xx 5dB 54M privacy,short_slottime
nwid "myTouch 4G Hotspot" chan 11 bssid d8:b3:77:xx:xx:xx 49dB 54M privacy,short_slottime
由于我还没有用下划线替换引号内的空格,因此结果不符合我的要求:
%cat /tmp/ifconfig_scan | fgrep nwid | cut -f3 |\
cut -s -d ' ' -f 2,4,6,7,8 | sort -n -k4
"myTouch Hotspot" 11 bssid d8:b3:77:xx:xx:xx
ZyXEL 8 cc:5d:4e:xx:xx:xx 5dB 54M
Websense 6 00:22:7f:xx:xx:xx 59dB 54M
awk
。但我仍然希望在最终处理过程中将引号内的空格替换为下划线。 - cnstawk
或sed
,Perl更加合适。而且可扩展性也更强。 - Steve