数字と「.」を除くファイル内のすべての文字を削除するには、各単語(数字/ドット)はファイルの新しい行になければなりません。例2を参照してください。
- 解決策は、sed、awk、またはksh構文を使用することです。
注 - ソリューションは例2に基づいている必要があります。
実施例1
編集前のファイル
192.0.22.1++0.1
e32)5.500.5.5*kjcdr
##@$1.1.1.1+++jmjh
1.1.1.1333
33331.1.1.1
@5.5.5.??????
~3de.ede5.5.5.5
1.1.1.13444r54
192.9.30.174
&&^#%5.5.5.5
:5.5.5.5@%%^^&*
:5.5.5.5:
**22.22.22.22
172.78.0.1()*5.4.3.277
3.3.3ki.3.
ファイル例 2 チャーターは、数字と「.」を除くすべての文字を削除した後、各新しい単語が折り返されます。
192.0.22.1
0.1
32 5.500.5.5
1.1.1.1
1.1.1.1333
33331.1.1.1
5.5.5.
.
5.5.5.5
1.1.1.13444
54
192.9.30.174
5.5.5.5
5.5.5.5
5.5.5.5
22.22.22.22
172.78.0.1
5.4.3.277
3.3.3 .3.
答え1
これは古典ですtr
ユースケースなので、最も簡単な方法は次のとおりです。
tr -cs '[:digit:].' '[\n*]' < input > output
パラメーターは、[:digit:].
一致させる文字(数字と点)を指定します。[\n*]
置換する文字を指定します(すべてを改行で置き換えます)。この-c
オプションは数字と点を除くすべてが必要なので、最初の引数を反転します。-s
2番目の文字列の連続した改行文字を1つに圧縮します。
答え2
grepは次のことができます。
grep -o '[0-9.]\+'
答え3
sed
不要な文字を改行に置き換えてから、次のようにgrep
空白行を削除できます。
sed 's/[^0-9.]/\n/g' | grep .
結果はあなたが投稿したものとは異なります。32 5.500.5.5
最後の行と2つの行に分割されます。
Perlソリューション:各行を不要な文字に分割し、空でない行を見つけます。
perl -ne 'print "$_\n" for grep /./, split /[^0-9.]+/'
答え4
RHEL7から:
VALUETOEDIT で始まるすべての行を置き換えます。
sed -i -e 's/^VALUETOEDIT.*/NEWVALUE/g' somefile