シェルスクリプト - 特定のパターンの前の文字を削除する

シェルスクリプト - 特定のパターンの前の文字を削除する

私は私のものを持っています/etc/hosts

#192.168.54.144  name1
#192.168.54.144   name2
192.168.54.143   name3

#次のようにするために、IPアドレスIPv4の後にあるすべての文字を削除したいと思います。

192.168.54.144  name1
192.168.54.144   name2
192.168.54.143   name3

sedorawkまたはを使用する必要があると思いますcut

ありがとう

ベストアンサー1

GNUの使用sed:

実際のIPのみ一致(渡す):

sed -E 's/^#(((1?[0-9][0-9]?|2[0-4][0-9]|25[0-5])\.){3}(1?[0-9][0-9]?|2[0-4][0-9]|25[0-5]))/\1/' file

または単純一致の場合は、次の数字を確認してください#

sed 's/^#\([[:digit:]]\)/\1/' file

-iこれにより、対応する編集ファイルに追加された結果が印刷されます。


perl逆参照の必要性を排除するためにLookeheadを使用することもできます。

perl -pe 's/^\#(?=[[:digit:]])//' file

おすすめ記事