【linux/shell】awk获取除某列之外的其他数据
介绍
在使用 awk
时,如果你想要获取除了某一列之外的所有其他数据,可以通过设置字段分隔符(Field Separator,FS
)和输出字段分隔符(Output Field Separator,OFS
),然后打印除了指定列之外的所有字段来实现。
以下是一个基本的 awk
命令示例,它演示了如何获取除了第二列之外的所有数据:
awk '{for(i=1;i<=NF;i++) if(i!=2) printf "%s%s", $i, (i==NF?"\n":" ")}' 文件名
这个命令的解释如下:
for(i=1;i<=NF;i++)
:遍历所有字段。if(i!=2)
:如果字段号(i
)不等于2(即不是第二列),则执行打印操作。printf "%s%s", $i, (i==NF?"\n":" ")
:打印字段值,并根据是否是最后一列来决定是否添加换行符或空格。
示例
假设你有一个名为 data.txt
的文件,内容如下:
apple,banana,cherry
dog,elephant,fox
apple,giraffe,hippo
如果你想要获取除了第二列("banana" 和 "elephant")之外的所有数据,可以使用以下命令:
awk '{for(i=1;i<=NF;i++) if(i!=2) printf "%s%s", $i, (i==NF?"\n":" ")}' data.txt
执行后,输出将是:
apple cherry
dog fox
apple hippo
这个输出显示了除了第二列之外的所有数据。
注意
- 上述命令中的
NF
是awk
的内置变量,代表当前记录的字段数。 - 这个命令假设你不想打印第二列,并且每行的列数是一致的。
- 如果你的数据包含特殊字符或空格,可能需要适当调整
printf
命令中的格式化字符串。
原文地址:https://blog.csdn.net/qq_35902025/article/details/140160397
免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!