如何使用awk一起删除行和列

时间:2016-08-17 02:42:49

标签: bash shell awk sed

我在这里是超级新手,我试图从数据文件中删除几行(标题)和一些列(不是想要的字段),我发现: 如果我使用:

awk 'NR>2' text.txt >newtext.txt

我基本上可以摆脱前两行。 如果我使用:

awk '{for(z=2;z<=13;z++)$z="";$0=$0;$1=$1}1' text.txt > newtext.txt

我得到了所需的列。 但是,我不能一起做。如何组合两个命令? 我怎么能以有效的方式做到这一点?

3 个答案:

答案 0 :(得分:2)

你可以将它们组合起来,

$ awk 'NR>2{print $1}' file > output

请注意,在您的第二个脚本$0=$0;$1=$1中没用。由于您将列2-13归零,或许您打算只打印1?

答案 1 :(得分:0)

您可以尝试这样的事情

 awk '{if (NR>2) { print $0; print $1  }} ' text.txt >newtext.txt

if条件将确保不输出前2行。 如果只输出你想要的列

,在里面使用print命令

Note:我建议您在awk中使用print命令输出文本以重定向到文件

答案 2 :(得分:-1)

您可以尝试添加跳过前两行的BEGIN子句:

awk 'BEGIN {getline; getline}'