[英]How to search word in file that include dollar sign ($) using awk
我想捕捉包含以下模式的行:word1、word2、^word3$、word4
我想檢查該行中的第三個單詞是否等於 word3,^ 和 $ 符號始終位於使用 awk 的第三列中。像這樣:
less file.txt | awk '{if ($3=="^word3$") {print $0}}'
這將打印該行,我只是無法用 ^ 和 $ 符號抓住這個詞。
我該怎么做? (我必須使用awk,因為原來的命令比較復雜,我不能用grep)
謝謝!
已編輯:輸入的單詞由空格和逗號分隔。 所以awk
命令需要-F ", "
選項。
如果您使用運算符==
, awk
將執行完全匹配。 如果要使用正則表達式,則必須使用~
運算符。 所以你有兩個解決方案:
完全符合:
awk -F ", " '($3 == "word3") {print}' file.txt
正則表達式:
awk -F ", " '($3 ~ "^word3$") {print}' file.txt
由於{print}
是默認執行的指令,您甚至可以刪除該部分並只發出:
awk -F ", " '($3 ~ "^word3$")' file.txt
但如果我一遍又一遍地閱讀你的問題,我開始認為你想從你的文本中提取^word3$
。 在這種情況下,您需要的是:
awk -F ", " '($3 == "^word3$")' file.txt
(在這種情況下沒有方括號,如某處所建議)。
無需重新定義字段分隔符的等效解決方案是將逗號放在您要匹配的字符串中:
awk '($3 == "^word3$,")' file.txt
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.