linux - 如何在 AWK 中将字段分隔符设置为 ^@(特殊字符)?

我有这种格式的记录。

^@343453^@145562998^@1001^@1KDI03K^@1802282^@10^@118543r221^@10^@1k2FOOD^@1NB^@1^@4554545^@3444545^@1STD^@45454554^@1NORMAL^@1^@1^@1^@1CDIH^@1^@12PY567

这里的字段分隔符是^@,文件一共有73个字段

我试过了

awk -F "^@" ' { print $1} ' file.txt;
awk -F "\^\@" ' { print $1} ' file.txt;

但我无法将我的字段分开,我将整个记录作为输出。

正确的做法是什么?

最佳答案

您需要在字段分隔符中对 ^ 进行两次转义。为什么需要转义它,因为它具有特殊含义,因此要将其视为文字字符,请使用此字符。

awk -F'\\^@' '{print $2}'  Input_file

您的第一个字段是空的,因此无法打印,因此要通过显示的示例了解您的字段编号及其值,您可以尝试执行以下命令以更好地理解它们。

awk -F'\\^@' '{for(i=1;i<=NF;i++){print "field Number:"i " field value is:" $i}}' Input_file

您的示例的几行将是:

field Number:1 field value is:
field Number:2 field value is:343453
field Number:3 field value is:145562998
field Number:4 field value is:1001
field Number:5 field value is:1KDI03K

https://stackoverflow.com/questions/67294970/

相关文章:

regex - 我如何在 vim 中翻译正则表达式以与 sed 一起工作?

c++ - 在以函数为参数的模板函数中提取输入参数的类型

django - 错误 : UPGRADE FAILED: another operation (i

nlp - 如何为 T5 模型使用 forward() 方法而不是 model.generate()

python - Pandas pivot dataframe 并根据它们是否存在将新列设置为 Tr

c - C 版本是否向后兼容?

python - 如何将有效值传入 cleartext_keyset_json 以创建 Tink k

Python - 用于从文本中获取特定行的正则表达式

r - 使用 data.table 在列表中查找完整集

generics - 如何使通用形式参数别名