次に始まる8つのファイルがあります。SEALS-*
各ファイルにはヘッダーとデータがあります。
#Col_1\Col_2\Col_3\col_4 --- header
\\\\\\\\\\ --- data
空の項目の場合は、\
オンラインであるこのレコードを削除する必要があります。
答え1
i
Perlフラグの使用所定の位置で編集:
$ perl -pi -e '$_ = "" if m{^\\\\}' file.txt
find
パイプにエクスポートするには、次のようにしますxargs
。
$ find . -type f | xargs perl -pi -e '$_ = "" if m{^\\\\}'
find
コマンドを使用する場合-exec
:
$ find . -type f -exec perl -pi -e '$_ = "" if m{^\\\\}' {} \;
答え2
最初の答え:
すべてのテキスト操作では、Perlは常に良い選択です。
perl -e 'while(<>){print if(!/(\\\\)+/)}' file > file.new
ただし、単にシェルを使用したい場合は、この方法も可能です。
grep -v '\\\\' file > file.new
良い結果:)
編集する:
新しいファイルを作成できない場合でも、Perlは次のことができます。
perl -e 'open FILE_R, "+<$ARGV[0]"; @line=<FILE_R>; open FILE_W,"+>$ARGV[0]"; foreach(@line){print FILE_W if(!/(\\\\)+/);}' file
この長い行を説明しましょう。
open FILE_R, "+<$ARGV[0]"; @line=<FILE_R>;
=>「読み取り」モードでファイルを開き、すべてのデータを配列にコピーします。
open FILE_W,"+>$ARGV[0]"; foreach(@line){print FILE_W if(!/(\\\\)+/);}
=> "書き込み"モードでファイルを開いて切り取り、すべてのデータ(\\行を除く)をファイルに書き込みます。
私はお勧めしますこのツールPerlについてもっと詳しく知りたい場合:)