この期間中はお元気にしてください。問題は、私のtxtファイルのいくつかの行にコメントを付けたいのです。複数行にコメントを付けてコメントを解除するコードがありますが、会社名を取得する方法がわかりません。私のテキストファイルには次のスキームがあります。lunar_static KKK_<countryname>_NUM 08.00.name
lunar_static KKK_USA_NUM 08.00.Winter
lunar_static KKK_ITALY_NUM 08.Winter
lunar_static KKK_ITALY_NUM 08.00.Spring
lunar_static KKK_ITALY_NUM 08.00.Autumn
lunar_static KKK_SPAIN_NUM 08.00.Winter
lunar_static KKK_SPAIN_NUM 08.00.Spring
lunar_static KKK_FRANCE_NUM 08.00.Autumn
lunar_static KKK_FRANCE_NUM 08.00.Autumn
lunar_static KKK_ITALY_NUM 08.00.Ferari-taxi
lunar_static KKK_ITALY_NUM "/^08\\.00\\.Delta\\ M$/"
lunar_static KKK_ROMANIA_NUM "/^08\\.00\\.Delta\\ M$/"
lunar_static KKK_ITALY_NUM "/^08\\.00\\.Red\\_Park$/"
秋、フェラーリタクシー、デルタM、レッドパークでイタリアへのコメントをお願いします。私はsedを使っていくつかの名前にコメントを付ける方法を知っています。
sed -i '/Winter\|Spring/s/^/#/' file2.txt
そしてコメントを解除
sed -i '/Spring/s/^#//' file2.txt
ただし、国名に関係なくすべての名前を選択します。その国に行く方法がわからない。期待される出力
lunar_static KKK_USA_NUM 08.00.Winter
lunar_static KKK_ITALY_NUM 08.Winter
lunar_static KKK_ITALY_NUM 08.00.Spring
#lunar_static KKK_ITALY_NUM 08.00.Autumn
lunar_static KKK_SPAIN_NUM 08.00.Winter
lunar_static KKK_SPAIN_NUM 08.00.Spring
lunar_static KKK_FRANCE_NUM 08.00.Autumn
lunar_static KKK_FRANCE_NUM 08.00.Autumn
#lunar_static KKK_ITALY_NUM 08.00.Ferari-taxi
#lunar_static KKK_ITALY_NUM "/^08\\.00\\.Delta\\ M$/"
lunar_static KKK_ROMANIA_NUM "/^08\\.00\\.Delta\\ M$/"
#lunar_static KKK_ITALY_NUM "/^08\\.00\\.Red\\_Park$/"
私は私が受け取ったすべての提案に感謝します。ありがとうございます!
答え1
ITALY
クエリにターゲット国を含め、代替をグループ化し、2つのクエリ(Autumn|Delta....)
の間に文字を許可する必要があります。.*
sed -E '/ITALY.*(Autumn|Delta.. M|Red.._Park|Ferari-taxi)/s/^/#/' file1
\
脱出を避けるためのちょっとしたチートです。
sed -E '/ITALY.*(Autumn|Delta\\\\ M|Red\\\\_Park|Ferari-taxi)/s/^/#/' file1
-i
in place フラグを含む同じファイルを変更します。sed
sed -i -E .....
編集するこれを別の質問で投稿することもできますが...
\\
「...sedを入力せずに単語を見つけることができますか\\\\
?...」つまり、いいえ逃げるそれらを。
いいえ。なぜならここ:
'\'文字の後にいくつかの一般的な文字が続くときは特別な意味を持ちます。
したがって、一致文字列で、次の文字が\
予約されたペア(たとえば\+
、、、\?
)のいずれかを構成する\n
文字である場合、リテラルまたは改行文字を探してsed
いるかどうかはどうすればわかりますか?\n
したがって、\
文字通り読み取る必要があるすべての文字は、sed
予約された文字シーケンスの一部ではないことを明確にするためにエスケープする必要があります。