入力は次のとおりです。
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
。