example.txt
行数を数え、結果をこのファイルの末尾に追加したいと思います。どうすればいいですか?
私は試した:
wc -l > example.txt
答え1
wc -l example.txt >> example.txt
答え2
ご存知のように、wc -lにはデフォルトで結果番号とファイル名が含まれています。何らかの理由で結果の数だけを表示する方が良い場合は、次のことを試してください。
wc -l example.txt | cut -d' ' -f1 >> example.txt
したがって、example.txtが3行で始まる場合は、次のようになります。
a
b
c
上記のコマンドを実行した後、最後の数行tail
ビューを使用すると(この場合はほとんど行がないため、ファイル全体が表示されます)、次のようになります。
$ tail example.txt
a
b
c
3
説明する
wc -l example.txt
結果行とファイル名のデフォルト数を提供するものが何であるかはすでにわかっています。3 example.txt
- この
cut
コマンドは、行から「フィールド」を抽出するのに役立ちます。 -d
区切り記号/フィールド区切り文字を設定するために使用され、' '
スペースで指定します。- この
-f1
メソッドは最初のフィールドを選択するため、指定された出力wc
は3 example.txt
最初の3
フィールドです。 >>
追加して結果を3
ファイルの末尾に保存します。example.txt
答え3
次のスクリプトは、ファイルがまだない場合はファイルの末尾に行数を追加し、すでに存在する場合は削除して置き換えます。
これにより、複数の「行数:」行を追加しなくても、ファイルを編集するたびにこのスクリプトを実行できます。
#! /bin/bash
count=$(wc -l "$1" | cut -d' ' -f1)
tail -1 "$1" | grep -q '^Line count: '
if [ $? ]; then
count=$(( $count - 1 )) # don't count the 'Line count' line
sed -i -e '$ d' "$1"
echo "Line count: $count" >> "$1"
else
echo "Line count: $count" >> "$1"
fi
答え4
追加ただ行数、これを試すことができます
$ cat example.txt | wc -l >> example.txt
ファイルの総行数のみが表示されます。