【问题标题】:Concat multiple files and prepend filename to every line in bash [duplicate]连接多个文件并将文件名添加到bash中的每一行[重复]
【发布时间】:2017-08-16 12:06:21
【问题描述】:

有多个文件:

1.csv
2.csv
...

带有一些通用内容,例如:

[1.csv]
a
b
c

[2.csv]
d
e
f

我想将文件的内容连接到一个文件中,但每一行都有文件名。所以结果应该是这样的:

[concatenated.csv]
1.csv;a
1.csv;b
1.csv;c
2.csv;d
2.csv;e
2.csv;f

【问题讨论】:

  • 该文件有多少行?
  • 每个文件可能有不同的行数

标签: bash csv concatenation


【解决方案1】:

你可以使用awk:

awk -v OFS=';' '{print FILENAME, $0}' *.csv

1.csv;a
1.csv;b
1.csv;c
2.csv;d
2.csv;e
2.csv;f

【讨论】:

  • 我可以让那个通用匹配任何 csv 文件吗?
  • 这已经足够通用了。 $0 打印整行。
猜你喜欢
  • 2021-05-04
  • 2015-02-27
  • 1970-01-01
  • 1970-01-01
  • 2018-03-08
  • 1970-01-01
  • 1970-01-01
  • 2023-03-10
  • 1970-01-01
相关资源
最近更新 更多