当前位置:   article > 正文

【linux/shell】awk获取除某列之外的其他数据

【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 的文件,内容如下:

  1. apple,banana,cherry
  2. dog,elephant,fox
  3. apple,giraffe,hippo

如果你想要获取除了第二列("banana" 和 "elephant")之外的所有数据,可以使用以下命令:

awk '{for(i=1;i<=NF;i++) if(i!=2) printf "%s%s", $i, (i==NF?"\n":" ")}' data.txt

执行后,输出将是:

  1. apple cherry
  2. dog fox
  3. apple hippo

这个输出显示了除了第二列之外的所有数据。

注意

  • 上述命令中的 NF 是 awk 的内置变量,代表当前记录的字段数。
  • 这个命令假设你不想打印第二列,并且每行的列数是一致的。
  • 如果你的数据包含特殊字符或空格,可能需要适当调整 printf 命令中的格式化字符串。

 

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/Guff_9hys/article/detail/796043
推荐阅读
相关标签
  

闽ICP备14008679号