0

我写脚本时遇到了奇怪的问题,cut 我有一行:

... | cut -d" " -f3,4 >! out

cut 接收到这个数据(我用回声检查了它)

   James             James              033333333 0              0.00

但我收到空行out,有人可以解释为什么吗?

4

4 回答 4

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
于 2010-06-02T11:08:14.363 回答
1

您需要压缩空格序列,以便将每个空格字符串替换为单个空格。该tr命令的-s(挤压)选项非常适合:

$ ... | tr -s " " | cut -d" " -f3,4 >! out
于 2010-06-02T11:18:38.777 回答
0

Cut 不会将多个空格视为单个空格,因此它匹配空格之间的“虚无”。

遗漏 >! out部分时会出现空行吗?即,您是否针对正确的字段?

如果您的输入字符串使用固定间距,您可能希望用于cut -c 4-10,15-20 | tr -d ' '提取字符组 4-10 和 15-20 并从中删除空格。

于 2010-06-02T11:05:28.923 回答
0
... | grep -o "[^ ]*"

将提取字段,每个字段都在单独的行上。然后你可能会领导/跟踪他们。不确定是否将它们再次放在同一条线上。

于 2010-06-02T11:21:47.103 回答