質問

私はシェルで作業していて、たくさんのCSVファイルでNUL文字を見つけようとしています(PythonのCSVインポーターはwhingingしていますが、それは別の時間です)。:

find ~/path/ -name "*.csv" -print0 | \
xargs -n 1 -0 \
perl -ne 'if(m/\x{00}/){print fileno(ARGV).join(" ",@ARGV).$_;}'

ファイル名が表示されないことを除いて。 伝えられるところでは 暗黙の <>演算子は perl -ne 私のスクリプトをラップしているのは、単に使用しているだけですか @ARGV /ザ- ARGV filehandleですが、上記のどちらも現在のファイルの名前を教えてくれません。

上記の現在のファイル名(および理想的には行番号)はどのように表示されますか?

役に立ちましたか?

解決

$ARGV は現在のファイルの名前であり、 $. は現在の行番号です;見る perldoc perlvarI/O演算子perldoc perlop.(注: $. ファイル間でリセットされません;それについての議論があります perldoc -f eof.)

そして、私はあなたがそれで何を達成しようとしているのか完全にはわかりません print;これはおそらく3であり、スペースで区切られたファイル名のリストの前に追加されます(これはおそらく1つだけでなければなりません xargs -n)、その後、現在の行には、 NUL そして、他の潜在的に端末を混乱させる文字。

他のヒント

次のような手順を実行します(ここで.plファイルで「x」を検索しました): ジェネラコディセタグプレ

はい、-nスイッチを使用して短縮できます: ジェネラコディセタグプレ

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top