如何通过gawk执行test.awk脚本生成修改后的newdataset.csv文件
实现方法
你需要先修正现有test.awk脚本的两个逻辑问题,再配合Shell输出重定向,就能在执行命令时直接生成目标文件:
- 问题1:你把字段分隔符
FS的设置写在了逐行执行的代码块里,这个配置需要在awk读取第一行内容前生效,必须放到BEGIN块中,同时建议同步设置输出字段分隔符OFS,避免输出的csv格式错乱。 - 问题2:现有脚本写了两个带
1(触发打印行操作)的代码块,会导致每行内容被重复输出两次,需要把两个替换操作合并到同一个处理块中,只保留一次打印触发即可。
修正后的test.awk完整代码如下:
BEGIN { FS = "," OFS = "," } { gsub(/\/[0-9]{1,2}\/[0-9]{4}/, "") gsub(/:[0-9][0-9]/, "") } 1
脚本修正完成后,执行命令时通过Shell的标准输出重定向,把处理结果直接写入newdataset.csv即可,对应执行命令如下:
gawk -f test.awk dataset.csv > newdataset.csv
注意:不要直接尝试把输出重定向到原
dataset.csv文件,会在awk读取文件前就把原文件清空导致数据丢失,等确认newdataset.csv内容符合预期后,再按需替换原文件即可。
内容的提问来源于stack exchange,提问作者e59
相关产品推荐
相关产品推荐

