cat linuxを使用して複数の.csvファイルにヘッダーを含める

cat linuxを使用して複数の.csvファイルにヘッダーを含める

名前を次に切り替えて、複数の.csvファイルに.csvヘッダーを同時に含める必要があります。

元の名前1c.csv、元の名前2c.csv、元の名前3c.csv

現在のプロセスは次のとおりです。

cat header.csv originalname1.csv > originalname1c.csv
cat header.csv originalname2.csv > originalname2c.csv
cat header.csv originalname3.csv > originalname3c.csv

など。

上記の例のように、単一のコマンドで複数のファイルにヘッダーを追加できますか?

ボーナス1:ファイル名がランダムな場合はどうなりますか?ルールを維持する:anyname.csvからanynamec.csvまで

ベストアンサー1

for name in anyname*.csv; do
    cat header.csv "$name" >"${name%.csv}c.csv"
done

以下は、anyname*.csv.csvファイルの内容を追加したいCSVファイルの名前と一致するディレクトリパスを含めることができるいくつかのシェルパターンですheader.csv。理想的には、このパターンは名前と一致しないでくださいheader.csv。その場合は、別の場所に移動したり、名前を変更したり、スキップしたりする明示的なテストを挿入することを検討してください。

for name in anyname*.csv; do
    [ "${name##*/}" = header.csv ] && continue
    cat header.csv "$name" >"${name%.csv}c.csv"
done

または、bashまたはzshシェルから

for name in anyname*.csv; do
    [ "$name" -ef header.csv ] && continue
    cat header.csv "$name" >"${name%.csv}c.csv"
done

(または単に無視してheaderc.csv生成される可能性のあるファイルを削除してください。)

ループは一致する名前を繰り返し、ヘッダーをCSVレコードに関連付けることで、元の名前と同じ名前ですが、ファイル名の.csvサフィックスがありますc.csv

標準拡張子${var%pattern}はに拡張されますが、$var一致する最短のサフィックス文字列は削除されますpattern。拡張${var##pattern}も標準で、一致する最も長いプレフィックス文字列を削除します$var。上記の例では、これを削除するために使用します$name

おすすめ記事