【发布时间】:2013-02-16 23:08:31
【问题描述】:
我的输入(例如,来自 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,它可能是你的解决方案,而不是 sed。 stackoverflow.com/questions/3458699/…
-
是的,我想我必须使用
awk。但我仍然想用下划线替换引号内的空格,作为最终处理的一部分。 -
检查 SUB 部分:staff.science.uu.nl/~oostr102/docs/nawk/nawk_92.html 你可以混合我给你的两个链接来解决你的问题。
-
@cnst:Perl 比
awk或sed更合适。也更具可扩展性。