从带有 \001 分隔符的文件中获取所需列

从带有 \001 分隔符的文件中获取所需列

我将 pig 文件的输出存储在一个目录中,其中包含由分隔符分隔的多个列的行\\u0001

现在在 shell 脚本中我想从输出中获取第 7 列字段。

我尝试了以下命令但没有得到所需的输出:

cnt=`awk -F '^A' '{print $7,$1}' $f`
cnt=`cut -d'\\u0001' -f8 $f | awk '{s+=$0}END{print s+0}'`

如何实现同样的效果?


以下是示例文件:

printf "c1\\u0001c2\\u0001c3\\u0001c4\\u0001c5\\u0001c6\\u0001c7\\u0001c8" > 001.txt

答案1

尝试以下语法:

awk -F '\001' '{print $7}' < myfile

在哪里:

  • -F- 使用下一个参数作为字段分隔符,
  • '\001'- 用 1 的数值来表达一个字节的方法,
  • '{print $7}'- 对于每一行输入,输出第 7 个字段,后跟换行符,
  • < myfile- 用作myfile输入。

答案2

您可以使用cut命令来实现这一点,例如

cut -d $'\001' -f7 001.txt

-d您的分隔符在哪里,-f列号在哪里。

相关内容