
我想匹配文件中以我的單字為前綴的所有行,或者該行是我的單字的前綴。例如,搜尋“abc”應符合:
a a a b
abc
abcd
abcxyz一個
但不是:
xabc
扎布
xaz
“我的單字是我的單字的前綴”部分很簡單,當然只需匹配“ ^abc
”,但我還沒有提出“行是我的單字的前綴”位元的解決方案。嘗試了 awk 中的某些內容,但無法使行內容成為正規表示式的一部分。
答案1
您需要處理兩種情況,其中該行比您的搜尋字串短或更長。
當它較長時,您想要測試行的開頭是否等於測試字串。
當它較短時,您想要測試搜尋字串的開頭是否等於該行。
在長度相等的情況下,任一方法都有效。
awk -v search=abc 'length() > length(search) ? substr($0, 1, length(search)) == search : substr(search, 1, length()) == $0' inputfile