我在函數中有以下awk行。正則表達式與awk交替
match($0,/'(.*)'/,a)
但是我想使它所以它將匹配'(.*)'
或"(.*)"
。我曾嘗試用不同的替代語法編寫它,例如:
match($0,/'(.*)'|"(.*)"/,a)
但是它不想工作。
只是想知道是否有人能指出這裏發生了什麼。
我在函數中有以下awk行。正則表達式與awk交替
match($0,/'(.*)'/,a)
但是我想使它所以它將匹配'(.*)'
或"(.*)"
。我曾嘗試用不同的替代語法編寫它,例如:
match($0,/'(.*)'|"(.*)"/,a)
但是它不想工作。
只是想知道是否有人能指出這裏發生了什麼。
嘗試這樣做,如果它是一個awk腳本:
match($0, /['"](.*)['"]/, a)
如果不是,(命令行):
match($0, /[\042\047](.*)[\042\047]/, a)
這將匹配不匹配引號的字符串。例如''abc''會匹配,你應該使用反向引用來安全地玩它。 –
'awk'甚至支持反向引用嗎? –
@MarkReed不,它不會。 –
您需要:
match($0,/\047([^\047]*)\047|"([^"]*)"/,a)
的a
使得呆子-具體。如果您將腳本存儲在以awk -f script
執行的文件中,則可以將\047
s更改爲'
s。
我們通常可以爲您提供的更多信息提供更多幫助。例如,如果您告訴我們「它不想要工作」的方式(語法錯誤?意外的輸出?沒有輸出?其他?),併發布一些示例輸入和期望輸出,並告訴我們腳本是否在文件中或者從命令行執行,如果你在Windows或UNIX上以及你正在使用的是哪個版本的awk(gawk?mawk?別的東西?),那將是非常有用的。 –