切割问题(unix)

时间:2010-06-02 11:01:07

标签: unix scripting csh tcsh

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

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

cut收到这些数据(我用echo检查了它)

   James             James              033333333 0              0.00

但我在out收到空行,有人可以解释原因吗?

4 个答案:

答案 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 "[^ ]*"

将提取字段,每个字段在单独的行上。然后你可以领导它们。不确定再将它们放在同一条线上。