2012-03-16 11 views

答えて

5

何か:

sed -i 's/[^1-5]//g' file 

はここで小規模なテストです:

$ echo $'ab129c\n1d3e5fqq9cm3275\ncn730m271nv05482m1' 
ab129c 
1d3e5fqq9cm3275 
cn730m271nv05482m1 
$ echo $'ab129c\n1d3e5fqq9cm3275\ncn730m271nv05482m1'|sed 's/[^1-5]//g' 
12 
135325 
3215421 
1

私はそれをやった:

それを画面にダンプします、とあなたが書くことができ
sed -r 's/[^12345]//g' <file> 

ファイルには:

sed -r 's/[^12345]//g' <file> > <new_file> 

それともsedよりも効率的でなければなりません

sed -i -r 's/[^12345]//g' <file> 
+1

ここでは '-r'の必要はありません。 –

+1

ええ、私はあなたがそれなしでそれをしたのを見ました。正規表現を完全に使う必要がないほどシンプルであっても、私はいつでも正規表現を使用しています。私はそれが何らかの害を及ぼすとは思わない、ただ必要ではない。 – kingcoyote

+1

'alias sedr =" sed -r "' :)多くの状況で '-r'を使う方がずっと簡単です。 –

2

trと直接ファイルを編集することができます。コピーicyrockのテスト:

$ echo $'ab129c\n1d3e5fqq9cm3275\ncn730m271nv05482m1' | tr -dc "1-5\n" 
12 
135325 
3215421 

trへの一つの欠点は、しかし、あります:それは(sed -iが行うような)既存のファイルのインプレース編集を行うことはできません。それがあなたが一時ファイルに書いておきたいものなら、元のファイルと置き換えてください:

tr -dc "1-5\n" <file.txt >tempfile.txt && mv tempfile.txt file.txt 
+1

+1はtrに言及しています(私は自分自身をLinuxの高度なユーザと考えていますが、私はそれをどこでも見ることはできません)。 – AoeAoe

関連する問題