簡體   English   中英

如何在 AWK 中將字段分隔符設置為 ^@(特殊字符)?

[英]How to set field separator as ^@ (special characters) in 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;

但是我無法將我的字段分開我將整個記錄作為 output。

這樣做的正確方法是什么?

您可以使用:

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

343453

解釋:

  • ^是特殊的正則表達式元字符,需要雙重轉義,而@不需要任何 escaping。
  • 使用print $2而不是print $1因為您在記錄開頭有分隔符^@因此$1或第一個字段將為空。

您需要在字段分隔符中加倍轉義^ 為什么需要轉義它,因為它具有特殊含義,因此要使其被視為文字字符,請使用此字符。

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM