awkまたはsedを使用してcsvファイルの各行の末尾にwc -l出力を追加する方法

awkまたはsedを使用してcsvファイルの各行の末尾にwc -l出力を追加する方法

wc -lファイルの各行の末尾に出力を追加しようとしています。 1つのファイルに20個のレコード/行がある場合は、そのファイルの各行の末尾に数字20を追加し、次のファイルに100個のレコード/行がある場合は、各行の末尾に100を追加したいと思います。次のコマンドを試しましたが、必要に応じて実行されませんでした。

awk -v char=$(wc -l FILENAME | cut -f1 -d' ') '{print $0"," char}' FILENAME

ベストアンサー1

これは奇妙な要求ですが、好きなように機能します。

#!/bin/bash

shopt -s nullglob

for f in *.csv; do
   size="$(wc -l <$f)"
   sed -i "s/$/,$size/g" "$f"
done

exit

これにより、.csv現在のディレクトリ内のすべてのファイルが内部で編集されます。

編集:Macではバックアップ拡張が必要な​​ので、sedコマンドが必要な場合があります。sed -i '.bak' "s/$/, $size/g" "$f"しかし、これは私のLinuxシステムでは機能しません。

おすすめ記事