2

Perlスクリプトでtxtファイルの最初の行を削除するにはどうすればよいですか?

`sed "1d" filename.txt` 

動作しません。

4

4 に答える 4

2

あなたが使用することができますTie::File

use Tie::File;
tie @array, 'Tie::File', $filename or die $!;
shift @array;
untie @array;
于 2012-06-06T17:00:09.477 に答える
1
`sed 1d filename.txt > newfile.txt` 

動作するはずです。ファイルにリダイレクトしない場合は、ファイル全体からstdoutへの最初の行を除いたものが読み取られます。

于 2012-06-06T16:50:14.457 に答える
0

これは、出力をの代わりにsedのSTDOUT(Perlが変数へのキャプチャに進む)に送信しますfilename.txt。を使用したいsed-i

sed -i "1d" filename.txt

キャプチャする出力がないため、バッククォートを使用しても意味がありません。あなたが欲しいsystem

system('sed -i "1d" filename.txt');

より良い:(別のシェルの起動を回避します)

system('sed', '-i', '1d', 'filename.txt');

最高:(エラーチェックを行います)

use IPC::System::Simple qw( systemx );
systemx('sed', '-i', '1d', 'filename.txt');
于 2012-06-06T16:56:25.600 に答える
0

インラインsedを使用してこれを行っているので、ここにPerlと同等のものがあります。

perl -ne'$.==1?next:print' <(seq 1 10)

オプションが意味するところ、

-n                assume "while (<>) { ... }" loop around program
-e program        one line of program (several -e's allowed, omit programfile)

その他の注意事項、

  • $.現在の行番号の変数です。
  • <()バックグラウンドでFIFOを生成するためのBashブードゥーです。
于 2012-06-09T05:52:37.660 に答える