sed/awk/perl 符合給定字串的所有前綴

sed/awk/perl 符合給定字串的所有前綴

我想匹配文件中以我的單字為前綴的所有行,或者該行是我的單字的前綴。例如,搜尋“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

相關內容