【发布时间】:2010-06-02 11:01:06
【问题描述】:
cut 有一个奇怪的问题
我写了脚本,我有行:
... | cut -d" " -f3,4 >! out
cut 接收到这个数据(我用 echo 检查过)
James James 033333333 0 0.00
但我在out 中收到空行,有人可以解释原因吗?
【问题讨论】:
cut 有一个奇怪的问题
我写了脚本,我有行:
... | cut -d" " -f3,4 >! out
cut 接收到这个数据(我用 echo 检查过)
James James 033333333 0 0.00
但我在out 中收到空行,有人可以解释原因吗?
【问题讨论】:
您需要压缩空格序列,以便将每个空格字符串替换为单个空格。 tr command's -s(挤压)选项非常适合:
$ ... | tr -s " " | cut -d" " -f3,4 >! 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
【讨论】:
Cut 不会将多个空格视为单个空格,因此它匹配空格之间的“虚无”。
当您遗漏>! out 部分时,您会得到空行吗?即,您是否针对正确的字段?
如果您的输入字符串使用固定间距,您可能希望使用 cut -c 4-10,15-20 | tr -d ' ' 提取字符组 4-10 和 15-20 并从中删除空格。
【讨论】:
... | grep -o "[^ ]*"
将提取字段,每个字段位于单独的行上。然后你可能会领导/跟踪他们。不确定是否将它们再次放在同一行。
【讨论】: