簡體   English   中英

awk沒有選擇字符串和管道作為分隔符

[英]awk is not picking string and pipe as delimiter

我有一個文件,其中每條記錄都有一個單詞"TST_BI|" 我需要使用分隔符並將此字符串后的值填充到文件中。 每條記錄中只出現一次此字符串。

它在AIX環境中使用以下命令正常工作。 awk -F "TST_BI|" '{print $2}' file.txt awk -F "TST_BI|" '{print $2}' file.txt

但是,當我移植的代碼的Linux,並試圖相同,命令無法正常工作,其中值"|" 也正在人口稠密。 以下是AIX和Linux的輸出

輸入:

<14>1 2017-08-31T04:13:47.2345839+00:00 loggregator ecsdasc0985-cs656-4asdsds-asds-asdasg6ds73 [DEV/2] - - TST_BI|DATE~2017-08-31 04:13:47,095|TIMESTAMP~04:13:47|TEST_ID~biTestExecutor-2|COUNTRY_CODE~XX|GROUP_TESTS~BZAG

來自AIX的OutPut:

DATE~2017-08-31 04:13:47,095|TIMESTAMP~04:13:47|TEST_ID~biTestExecutor-2|COUNTRY_CODE~XX|GROUP_TESTS~BZAG

使用相同的命令, Linux輸出

|DATE~2017-08-31 04:13:47,095|TIMESTAMP~04:13:47|TEST_ID~biTestExecutor-2|COUNTRY_CODE~XX|GROUP_TESTS~BZAG

管道正在填充,而不是作為分隔符處理。

有人可以幫忙嗎?

豎條char | 用相鄰字符指定的值被視為正則表達式交替運算符/交替組。 在這種情況下,要治療| 從字面上看 - 它應該被轉義為\\\\| 或者放入一個字符類[|]

awk -F'TST_BI[|]' '{print $2}' file.txt

輸出:

DATE~2017-08-31 04:13:47,095|TIMESTAMP~04:13:47|TEST_ID~biTestExecutor-2|COUNTRY_CODE~XX|GROUP_TESTS~BZAG

暫無
暫無

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

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