2009-09-02 17 views
0

一連のファイルに対して一連のファイルを使用して、ファイル内の行数を数え、対応する入力の一部で出力ファイルに出力するLinuxコマンドファイルを出力行の一​​部として出力します。だから、例えば私たちは、ファイルLOG_Yellowを見ていたし、それが28行を持っていた、出力ファイルには、このようなラインを持っているでしょう(Yellow28はタブ区切りです):入力ファイルの名前と行数の一部を出力するLinuxコマンド

Yellow 28 
+0

すべてのファイルはLOG_で始まっていますか? –

+0

はい。私はawkとwc -lの組み合わせを使うのが一番良いと思います。 – biznez

+0

私は、これがなぜスーパーユーザー(またはサーバーに関するすべてのLinuxに関する質問を考慮した場合はserverfault)に属しているとして閉じられていないのか、迷っています。 – rmeador

答えて

4
wc -l [filenames] | grep -v " total$" | sed s/[prefix]// 

wc -lはほぼ正しい形式で出力を生成します。 grep -vは、wcが生成する "total"行を削除します。 sedはあなたがファイル名から欲しがらないジャンクを取り除きます。あなたのためのスクリプトを書くのショート

2
wc -l * | head --lines=-1 > output.txt 

は、このような出力を生成します。

linecount1 filename1 
linecount2 filename2 

私はあなたのニーズに合わせてここから作業できるはずです。

編集:私はあなたの名前抽出のルールを見ていないので、私はまだ完全な名前を残します。しかし、他の回答と違って、私はではなくheadを使いたいだけでなく、少し速くするだけでなく、total*という名前のファイルをフィルタリングすることも避けています。

EDIT2(コメントを読んだ):以下は全体の多くを行います。

wc -l * | head --lines=-1 | sed s/LOG_// | awk '{print $2 "\t" $1}' > output.txt 
2

wc -l *| grep -v " total" したい場合は、それを逆にすることができます

28イエロー

を送信(awk、ファイル名にスペースがない場合) wc -l *| egrep -v " total$" | sed s/[prefix]// | awk '{print $2 " " $1}'

+0

Sboddの 'sed'呼び出しを追加してください。これが答えです。 – Welbog

1

「は」

  • あなたのファイルをループのために。
  • は、現在のファイルを印刷するための「-nエコー」
  • 「トイレ-l」行数
  • を見つけるためとに (「>」や「>>」)あなたの結果をリダイレクトすることを忘れていけないあなた 出力ファイル
関連する問題