与えられたフォームを含む行だけsedする方法は?

与えられたフォームを含む行だけsedする方法は?

入力は次のとおりです。

asdfZE3033141xycf
asdfINSFRHxycf

次の出力が必要です。

asdfZE3033141

asdfINSFRHxycf

だから私は1つを使用しました:

echo -e 'asdfZE3033141xycf\nasdfINSFRHxycf' | sed '/asdfZE3033141xycf/ s=xycf$=\n='

しかし、一般的にこれが必要です。だから私は毎回sedをする必要があります:

asdfZE[0-9][0-9][0-9][0-9][0-9][0-9][0-9]xycf

テキストファイルの行。 「[0-9]」をsedに入れることはできません。どうすればいいですか?

答え1

仕事を少し修正してみてはいかがでしょうか?

echo -e 'asdfZE3033141xycf\nasdfINSFRHxycf' | sed -e 's/^\(asdfZE[0-9]\{7\}\)xycf$/\1\n/'

答え2

「[0-9]」にはどんな問題がありますか?なぜsedに入れることができないのですか?

使用時に簡単に使用できます。

sed '/asdfZE[0-9][0-9][0-9][0-9][0-9][0-9][0-9]xycf/s=xycf$=\n=' file

でも

sed '/asdfZE[0-9]\{7\}xycf/s=xycf$=\n=' file

sed は検索モードで正規表現をサポートします。

答え3

何を言っているのか分からない。

何について:

sed 's/^\(asdfZE[0-9]\{7\}\)xycf$/\1\
/'

? (バックスラッシュの後に実際の改行文字が続くのはs(代わりに)コマンドの右側に改行文字を挿入する標準的な方法です\n

関連情報