我有一個使用awk的正則表達式來查找文件行中的任何指定單詞。它看起來像這個awk "/word1/||/word2/||/word3/" filename
。作爲替代,我一直試圖指定這樣的詞,如WORDS="word1 word2 word3"
,然後使用bash字符串替換來形成傳遞給awk的正則表達式。爲什麼使用字符串替代形成正則表達式不起作用?
我試過很多方法做到這一點都無濟於事。 awk只是簡單地轉儲整個文件的內容,或者吐出關於正則表達式的一些抱怨。
這是我有:
#!/bin/bash
FILE="myfile"
WORDS="word1 word2 word3"
# use BASH string substitution to obtain the regex which should look like this:
# "/word1/||/word2/||/word3/"
REGEX=\"/${WORDS// //||/}/\"
awk ${REGEX} $FILE
我相當肯定它與報價做,我用echo嘗試了各種方法和背部蜱可以得到它看權(當迴盪),但實際上嘗試使用它時,它會失敗。
這既是對awk的奇怪使用,又是一種奇怪的正則表達式組合。你應該嘗試獲取'/ a | b | c /'(並使用擴展的'grep') – Mat 2012-02-28 09:42:55
我在cygwin中試過這個:嘗試在正則表達式的特殊字符前添加「\」符號。這個命令適用於我:'awk/\(def \ | abc \)/ abc.txt' - 查找所有具有「def」或「abc」的行 – user1227804 2012-02-28 09:48:27
@Mat。謝謝。搜索結果導致我awk。 – 2012-02-28 09:49:36