Sed/awk/perlは指定された文字列のすべてのプレフィックスに一致します

Sed/awk/perlは指定された文字列のすべてのプレフィックスに一致します

ファイル内の、自分の単語が接頭辞になっている行、または自分の単語の接頭辞になっている行をすべて一致させたいと思います。たとえば、「abc」を検索すると、次の行が一致します。

a
b
c
abcd
abcxyz は、

だがしかし:

xabc
zzab
xaz

「私の単語は接頭辞です」という部分は簡単です。^abcもちろん「 」に一致させるだけですが、「行は私の単語の接頭辞です」という部分については解決策が思いつきませんでした。awk で何か試してみましたが、行の内容を正規表現の一部にすることはできませんでした。

答え1

処理する必要があるケースは 2 つあります。行が検索文字列より短い場合と長い場合です。

長い場合は、行の先頭がテスト文字列と等しいかどうかをテストする必要があります。

短い場合は、検索文字列の先頭が行と等しいかどうかをテストします。

長さが等しい場合は、どちらの方法でも機能します。

awk -v search=abc 'length() > length(search) ? substr($0, 1, length(search)) == search : substr(search, 1, length()) == $0' inputfile

関連情報