2016-05-25 9 views
0

複数のファイルがあります。すべてのファイルで "?"AWK/perlを使用して特定のシンボルを含む特定の行を削除する方法

の.txt *

のperl -pi -e "S/\ // gを?":シンボルなので、どのように私は、次のコマンドを使用し、単一のAWK/perlのコマンド

を使用して、すべてのファイルでそれらの行全体を削除するには

が削除されますか?記号は全行ではないので、「?」を含む行全体を削除するのを助けてください。シンボル。

+0

'? 'で行を表示しないでください。あなたは?を削除していますが、とにかく行を印刷しています。 'perldoc perlrun' – toolic

答えて

0

つperly方法:

perl -ni -e 'next if /\?/; print' *.txt 

ファイル上-nフラグループ-pと同様に、しかし、それは自動的に線を印刷しません。それはあなたにその責任を任せます。つまり、すべての行をループし、?の文字をスキップしてnext()とし、他の文字をすべて印刷します。

+1

steviebさん、ありがとうございました。 – mona

+1

!/ \?/ '* .txt'の場合、次の 'perl -ni -e'プリントは必要ありません。 – 123

+0

あなたは正しいです。なぜ私はそれをやっていないのか分かりません。まだかなり早いAM;) – stevieb

1

単一ファイルの最も簡単な解決策はgrep -Fv \? old_file > new_fileです。 sed -i '/\?/d' old_fileを使用することもできます。一度にすべてのファイルを処理したい場合は、ループを作成せずに、sedが複数のファイルを同時に処理できるので、2番目のオプションが便利です。

+1

OPはグロブを渡してすべてのファイルを処理しようとしています。 – stevieb

+0

@stevieb私は私の答えを修正しました。 –

+0

sed -i '/ \?/ d'ファイルが動作しない、sed:1: "ff":無効なコマンドコード – mona

関連する問題