エコをパターンとして適用

エコをパターンとして適用

あなた教える次の使用中にコンテンツをどのように削除しますか<>

 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

関連情報