如何用awk在CSV文件每行末尾以逗号分隔添加文件名
解决CSV文件每行末尾添加逗号分隔的文件名问题
你可以通过两种简单方式修改awk命令,把空格分隔改成逗号分隔:
方法1:修改输出字段分隔符(OFS)
awk默认用空格作为输出字段的分隔符,你可以通过-v OFS=','参数指定逗号为分隔符,这样打印多个字段时就会用逗号连接:
awk -v OFS=',' '{print $0, FILENAME}' *.csv > concatenated_files.csv
方法2:直接字符串拼接
不用依赖OFS,直接把当前行内容、逗号、文件名拼接成一个字符串输出:
awk '{print $0 "," FILENAME}' *.csv > concatenated_files.csv
如果需要像你示例里那样,每个文件的开头先单独输出一行文件名(比如file.csv),可以用GNU awk支持的BEGINFILE块,在处理每个文件的第一行之前先打印文件名:
awk -v OFS=',' 'BEGINFILE{print FILENAME} {print $0, FILENAME}' *.csv > concatenated_files.csv
内容的提问来源于stack exchange,提问作者Workhorse
相关产品推荐
相关产品推荐

