我想在一个csv的title字段(field2)中替换一个完整的停止,后面跟一个空格:
csv示例:
8389383, hello my.friend,839083083,3390903
Run Code Online (Sandbox Code Playgroud)
预期产量:
8389383, hello my. friend,839083083,3390903
Run Code Online (Sandbox Code Playgroud)
我可以使用以下行成功地用空格替换csv中的句号:
sed -r ':b s/^([^,]*,[^,]*)\./\1 /g; t b' csv
Run Code Online (Sandbox Code Playgroud)
但是,我想用一个句号替换句号,后跟一个空格.我试过了:
sed -r ':b s/^([^,]*,[^,]*)\./\1. /g; t b' csv
Run Code Online (Sandbox Code Playgroud)
但这会挂起并且不会产生结果.
我可以添加什么线来允许这个?
编辑 - 只是要添加,我想要替换的字段2(标题字段)中可能有多个句号.我也不希望此规则适用于csv中的任何其他字段.
awk 最适合这类工作
为了替换第二个字段中的所有全站点
awk -v FS="," -v OFS="," '{gsub(/\./,". ",$2)}1' file.csv > tmpfile && mv tmpfile file.csv
8389383, hello my. friend,839083083,3390903
8389383, hello my. fri. end,839083083,3390903
Run Code Online (Sandbox Code Playgroud)