#!/bin/sed -f
s/","/|/g; # global change of "," to bar
# do some more stuff
#s/|/","/g; # global change of bar back to ","
#---end of script---
上面的脚本从 CSV 中删除了第二个字段,并清除了引号等。我没有包含大部分脚本,因为它与问题无关。
脚本保存在文件中fix.sh
。
我可以在这样的文件上运行它:
$ ./fix.sh <myfile.txt >outputfile.txt
而且效果很好。
但我希望它在文件中替换。这不起作用:
$ ./fix.sh <myfile.txt >myfile.txt
结果是空的myfile.txt
。
这也不起作用:
$ ./fix.sh myfile.txt
我试图找到一些关于sed
bash 脚本的文档,但没有找到任何帮助我的东西。
我确定答案很简单,我就是找不到。谢谢你的帮助。
编辑:我应该提到这是在 CentOS 6 机器上运行的。
完整的脚本如下。其总体结果是删除 field#2 并去除引号。
#!/bin/sed -nf
# adapted from http://www.linuxtopia.org/online_books/linux_tool_guides/the_sed_faq/sedfaq4_005.html
s/","/|/g; # global change of "," to bar
s/^"//;
s/"$//;
s/^\([^|]*\)|[^|]*|/\1|/; # delete 2nd field contents
s/||/|/; # change || to |
s/ //g; # remove spaces
s/|/,/g;
#s/|/","/g; # global change of bar back to ","
#---end of script---