私は私のものを持っています/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
sed
orawk
またはを使用する必要があると思います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
答え2
注文する
sed "/^#[0-9]*\.[0-9]*\.[0-9]*\.[0-9]\{3\}/s/#//g" filename
出力
sed "/^#[0-9]*\.[0-9]*\.[0-9]*\.[0-9]\{3\}/s/#//g" filename
192.168.54.144 name1
192.168.54.144 name2
192.168.54.143 name3
答え3
Pythonを使ってみましたが、うまくいきます。
#!/usr/bin/python
import re
g=re.compile(r'[0-9]*\.[0-9]*\.[0-9]*')
m=open('u.txt','r')
for i in m:
if re.search(g,i):
print i.strip().replace("#","")
出力1
92.168.54.144 name1
192.168.54.144 name2
192.168.54.143 name3
答え4
cat myfile | tr -d '#'
シンプルなTR!