単語の総数を追加せずにファイルの単語数をファイルに追加する方法

単語の総数を追加せずにファイルの単語数をファイルに追加する方法

パラメータ(ファイル)の行番号を別のファイルに追加するbashスクリプトを実行しています。正しく実行されますが、「合計X」行は引き続き表示されます。ここで、X はすべての行番号を加算した合計です。パラメータの数が特定の数Xより大きい場合は、数値全体を追加するにはどうすればよいですか?これが私が現在持っているものです:

wc -l $@ >> $1

答え1

複数引数形式では合計を抑制できないと思います。

私が考えることができる最も簡単な方法は、必要に応じて単一の引数形式に固執することです。

if [ "$#" -lt 5 ]
then
    for f in "$@"; do wc -l -- "$f"; done >>"$1"
else
    wc -l "$@" >> "$1"
fi

答え2

wc合計を取得するには、行数が少なすぎる場合は、出力から最後の行を削除してください。

word_counts=$(wc -l -- "$@")
newline='
'
if [ "$#" -le 9 ]; then
  word_count=${word_count%"$newline"*}
fi
printf '%s\n' "$word_count" >>"$1"

他の変数置換の内側と周囲に二重引用符があることに注意してください"$@"。これがないと、スクリプトはスペース(およびその他の特殊文字)を含むファイル名で何の利点もなく中断されます。また、ファイル名がaで始まる--場合(そうでない場合は、ファイル名はオプションとして解釈されます)に注意してください。wc -l -- "$@"---wc

関連情報