我写脚本时遇到了奇怪的问题,cut
我有一行:
... | cut -d" " -f3,4 >! out
cut 接收到这个数据(我用回声检查了它)
James James 033333333 0 0.00
但我收到空行out
,有人可以解释为什么吗?
如果您想要文本文件中的字段,awk
几乎总是答案:
... | awk '{print $3" "$4}'
例如:
$ echo 'James James 033333333 0 0.00' | cut -d" " -f3,4
$ echo 'James James 033333333 0 0.00' | awk '{print $3" "$4}'
033333333 0
您需要压缩空格序列,以便将每个空格字符串替换为单个空格。该tr
命令的-s(挤压)选项非常适合:
$ ... | tr -s " " | cut -d" " -f3,4 >! out
Cut 不会将多个空格视为单个空格,因此它匹配空格之间的“虚无”。
遗漏 >! out
部分时会出现空行吗?即,您是否针对正确的字段?
如果您的输入字符串使用固定间距,您可能希望用于cut -c 4-10,15-20 | tr -d ' '
提取字符组 4-10 和 15-20 并从中删除空格。
... | grep -o "[^ ]*"
将提取字段,每个字段都在单独的行上。然后你可能会领导/跟踪他们。不确定是否将它们再次放在同一条线上。