cut
我遇到了奇怪的问题
我写了剧本,我有一行:
... | cut -d" " -f3,4 >! out
cut收到这些数据(我用echo检查了它)
James James 033333333 0 0.00
但我在out
收到空行,有人可以解释原因吗?
答案 0 :(得分:1)
如果您想要文本文件中的字段,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
答案 1 :(得分:1)
您需要压缩空格序列,以便每个空格字符串由单个空格替换。 tr
command's -s(挤压)选项非常适用于此:
$ ... | tr -s " " | cut -d" " -f3,4 >! out
答案 2 :(得分:0)
剪切不会将多个空格视为单个空格,因此它与空格之间的“无关”匹配。
当你遗漏>! out
部分时,你会得到空行吗?即,你的目标是正确的字段吗?
如果输入字符串使用固定间距,您可能希望使用cut -c 4-10,15-20 | tr -d ' '
提取字符组4-10和15-20并从中删除空格。
答案 3 :(得分:0)
... | grep -o "[^ ]*"
将提取字段,每个字段在单独的行上。然后你可以领导它们。不确定再将它们放在同一条线上。