簡體   English   中英

如何使用 awk 在包含美元符號 ($) 的文件中搜索單詞

[英]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.

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