自学内容网 自学内容网

【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)!