使用awk处理第二列,其中空格为一列

时间:2013-01-14 21:54:22

标签: shell awk

对于看起来像这样的文件:

Paul    white male 34 
Jane    black female 22
Sam     white male 44

我想要一个awk行来处理与第二列相同的第一列之后的所有内容,以便我可以在上面运行它并生成以下内容

white male 34 
black female 22
white male 44

目前,awk'{print $ 2}只输出第一个单词,而不是该行的其余部分。

谢谢!

2 个答案:

答案 0 :(得分:1)

其中一个应该对你有用,取决于第一个空格字符是什么,其余空格是:

awk '{sub(/[^ ]+[ ]+/,"")}1' file
awk -F'\t' '{print $2}' file

答案 1 :(得分:0)

Ed Morton提供了一种标准方式,可以满足您的需求。

我会提到另一种(棘手的)方式:

在您的awk行中,您可以设置$2而不是打印$1="",然后打印整行。

awk '!($1="")' file

看测试:

kent$  echo "Paul    white male 34 
Jane    black female 22
Sam     white male 44"|awk '!($1="")'
 white male 34
 black female 22
 white male 44

这个单线很短,给你输出。但每条线上都有一个前导空白。它也很容易被删除:

awk '!($1="")&&gsub(/^ /,"")'