从文件中提取特定序列

时间:2014-07-26 18:09:27

标签: regex shell

我有一个文件,它有一个空间分隔符,它们的间隔不等,

john  0101 C1     Comp  
mayo 0120 D2     Comp
peter  0110 E1     IT

等。我想从单独的字段中提取文件中的所有值。 我尝试使用cut like,

cut -f1,2,3 -d " " line1

但只有正确的名字才能正确提取而不是剩余。我认为问题在于空间不平等。请建议我解决这个问题 抱歉,如果这是一个非常简单的问题。

2 个答案:

答案 0 :(得分:8)

这是因为cut在多次出现分隔符时效果不佳。

您可以改用awk:

awk '{print $1, $2, $3}' file

或者,您可以使用tr -s ' '来挤压多个空格:

tr -s ' ' < file | cut -f1,2,3 -d " "

答案 1 :(得分:2)

存在tr命令,可以帮助您摆脱这种情况,

将多个单个字符的出现转换为1

echo $line | tr -s " " | cut -f1,2,3 -d " "

会为你做的。 甚至Awk也可以提供帮助

awk '{print $1, $2, $3}'(其他字段也是)