次のスクリプトを使用して名前が異なり、同じデータ構造を持つ28個のファイルをマージしたいと思います。
$ cp mohan.csv Consolidate.csv
$ for fname in line
do
cat $fname | sed '1d' >> Consolidate.csv
done < input.txt
そしてinput.txt
以下を含んでいます:
mohan.csv
babu.csv
mahesh.csv
datvik.csk
... etc
そして
$ cat mohan.csv
no,name,dept
1,xyz,hr
2,abc,sales
私のスクリプトの出力:
$ cat Consolidate.csv
no,name,dept
1,xyz,hr
2,abc,sales
babu.csv
mahesh.csv
datvik.csk
... etc
この問題について助けてください。
ベストアンサー1
さまざまなツールを使用して作業を完了できます。最初のヘッダーを保持し、他のヘッダーを削除したいとします。したがって、他のファイルのヘッダーを削除しながら、変更されていない最初のファイルに追加するだけです。
削除する:mohan.csv
input.txt
$ cat input.txt
babu.csv
mahesh.csv
datvik.csk
... etc
それから:
$ cp mohan.csv consolidate.csv
$ for file in "$(<input.txt)"; do
sed '/no,name,dept/d' "$file" >> consolidate.csv
done
または以下を使用してread
:
$ cp mohan.csv consolidate.csv
$ while read -r file; do
sed '/no,name,dept/d' "$file" >> consolidate.csv
done < input.txt
あるいは、より簡単には、以下sed
で純粋な答えを見つけることができます。https://unix.stackexchange.com/a/204343/72707