fdsf fdsf fdsfds fdsf
fdsfdsfsdf fdsfsf
fsdfsdf var12=1343243432
fdsf fdsf fdsfds fdsf
fdsfsdfdsfsdf
fsdfsdf var12=13432434432
fdsf fdsf fdsfds fdsf
fsdfsdf fdsfsf var12=13443432432
測試文件現在我想用var12=\d+
作爲記錄分隔符。這是可能的awk
fdsf fdsf fdsfds fdsf
fdsfdsfsdf fdsfsf
fsdfsdf var12=1343243432
fdsf fdsf fdsfds fdsf
fdsfsdfdsfsdf
fsdfsdf var12=13432434432
fdsf fdsf fdsfds fdsf
fsdfsdf fdsfsf var12=13443432432
測試文件現在我想用var12=\d+
作爲記錄分隔符。這是可能的awk
是的,但你應該使用[0-9]
而不是\d
:
awk '1' RS="var12=[0-9]+" file
IIRC,只有GNU awk
可以使用多字符記錄分隔符。
結果:
fdsf fdsf fdsfds fdsf
fdsfdsfsdf fdsfsf
fsdfsdf
fdsf fdsf fdsfds fdsf
fdsfsdfdsfsdf
fsdfsdf
fdsf fdsf fdsfds fdsf
fsdfsdf fdsfsf
請,如果你需要進一步的幫助發表您所需的輸出。
謝謝史蒂夫,你是我的英雄。你如何在這些工具中定期使用sed awk – user2024264
。我學習SO。或者至少,我想我學會了。 + 1的全部。 – Steve
假設在Linux上GNU awk(又名gawk
),是的。
RS
這是awk的輸入記錄分隔符。它的默認值是一個包含單個換行符的字符串,這意味着輸入記錄由一行文本組成。它也可以是空字符串,在這種情況下,記錄由空白行分隔開。 如果它是一個正則表達式,則記錄由輸入文本中正則表達式的匹配分隔。
來源:7.5.1 Built-in Variables That Control awk
,The GNU Awk User's Guide。
由於@steve says,\d
是不是在Regular Expression Operators或gawk
-Specific Regexp Operators列表,所以你需要在你的地方的\d
使用bracket expression如[0-9]
或[[:digit:]]
。
但是,從您的問題中不清楚您的目標是什麼。我回答了你的問題,但我懷疑我已經解決了你的根本問題。另請參見What is the XY problem?
是的(請參閱其他答案),但將RS設置爲空字符串以空行分隔記錄對於發佈的輸入而言將非常有用,它可以在任何awk中使用。 –