[英]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.