あなた教える次の使用中にコンテンツをどのように削除しますか<>
?
echo 'i< 1| | 1> -1.0000000000000' | sed 's/<[^-]*//'
i-1.000000000 as
これは私が要求したものを正確に提供しますが、私のテキストファイルには次のような行がたくさんあります。
< 1| | 1> 1.7320508075689
< 1| | 1> 1.0000000000000
< 1| | 1> 1.0000000000000
I< 1| | 1> -1.0000000000000
< 1| | 1> 1.0000000000000
<..>
そのため、このコマンドをパターンとして適用してファイルのすべての内容を削除したいと思います。
答え1
sed 's/<[^-]*//'
<
からまでのすべての項目を効果的に削除します(含まれていません)-
。
実際に<
次の項目から始まるすべての項目を削除するには、>
次の手順を実行します。
sed 's/<[^>]*>//'
おそらく、この問題は自分で理解するので、ここで正規表現の構文を理解していないようです。[^>]
を除くすべての文字と一致します>
。
sed
最後に、ファイルパスを引数として指定することで、ファイルから直接コマンドを実行できます。したがって、名前付きファイルに対して上記のコマンドを実行するには、foo.txt
次の手順を実行します。
sed 's/<[^>]*>//' foo.txt
そして、コマンドが実際にファイルを変更できるようにするには、次のようにします。
sed -i.bak 's/<[^>]*>//' foo.txt
元のファイルの名前はfoo.txt.bak
。