「[」で始まり、特定の文字列で終わるすべての文字列をgrepする必要があります。 "仲間"。したがって、これらの2つの文字の間にあるすべての文字も表示されます。次のような入力があるとします。
[44060]apal223reaea[55000]opoer4nr4on[95749]assad fdfdf Bhassrj sdaapald33qdq3d3da3ded[66000]dsfsldfsfldkj[77000]porpo4o4o3j3mlkfxxxx[101335]KaMMMM MMM lapa[131322]sadasds ddd apaladsdas[138133]sadasdadasddsss KMMapaldsadsadwe[150000]idhoqijdoiwjodwiejdw
出力はうそになります
[44060]apal
[95749]assad fdfdf Bhassrj sdaapal
[101335]KaMMMM MMM lapal
[131322]sadasds ddd apal
[138133]sadasdadasddsss KMMapal
使用する:
grep -o '\[.*apal' file.txt
置換file.txt
は実際のファイル名です。
一方、一致させたい場合は[
行頭:
grep -o '^\[.*apal' file.txt
試してください:
grep -o '^\[.*apal$' file.txt
正規表現に一致させるコマンド:....... use grep
一致するにはonly記述された正規表現、........使用-o
行の先頭に合わせるには、................. ^
:^\[
間の文字を照合するには、.use .
:.*
行末に一致させるには、................... $
:apal$
照合するものを含むファイル。file.txt
[
とapal
の間のテキストのみが必要な場合は、Perlが適しています
Perl -lne '/(?<=\[)(.+?)(?=apal)/ and print $1' file
GNU grepが(たとえば自作)によってインストールされている)場合、次のことができます。
grep -Po '(?<=\[).+?(?=apal)' file
Grepを使用するよりも、sedを使用した方がよいでしょう。
sed 's/.*\(X.*Y\)/\1/p' < file.txt
Xを開始パターンに、Yを終了パターンに置き換えます。このコマンドは、sedのバッファー1に、XからYに一致するすべてのものを配置します。置換パターンの「\ 1」は、そのバッファーを印刷します。
したがって、あなたの例では:
sed 's/.*\(\[.*apal\)/\1/p' < file.txt
トリックを行う必要があります。