对于一个看起来像这样的文件:
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} 只会输出第一个单词,而不是该行的其余部分。
谢谢!
其中一个应该适合您,具体取决于第一个空格字符是什么,其余的空格是:
awk '{sub(/[^ ]+[ ]+/,"")}1' file
awk -F'\t' '{print $2}' file
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(/^ /,"")'