从shell脚本重命名数据文件(.csv文件)中的页脚内容

时间:2016-08-30 17:36:16

标签: shell awk sed

我得到一个.csv文件,其中最后一行有页脚值 例如:

896312,3251040212,3251040212,P5,7052016,7072016,0,$0.00,N,1
896312,3251067611,3251067611,P5,7052016,7072016,0,$0.00,N,1
**WOR_FOOTER_20160705100007_000000010_WOR_896312_20160705_100007.csv**--This is footer.

我需要用VWOR_FOOTER_20160705100007_000000010_VWOR896312_20160705_100007.csv

替换页脚

在unix中。请帮忙。感谢

3 个答案:

答案 0 :(得分:4)

sed -i.bak '$s/WOR/VWOR/g' file

应该这样做。

<强>解释

  • 此处$选择最后一行。
  • s/WOR/VWOR/g进行全局替换。
  • -i代表inplace edit,这意味着直接修改文件。将自动创建.bak的备份。

修改

如果你的shell不支持inplace edit do

sed '$s/WOR/VWOR/g' file >tempfile && mv tempfile file

修改

如果WOR_FOOTER是唯一的并且保证只出现在一行中,那么您可以执行以下操作:

sed '/WOR_FOOTER/s/WOR/VWOR/g' file >tempfile && mv tempfile file

答案 1 :(得分:1)

sed是这样做的方式,因为它是单个线路上的简单替换,这是最好的选择,但只是便携式awk中的FYI它是:

awk 'NR>1{print prev} {prev=$0} END{gsub(/WOR/,"VWOR",prev); print prev}'

答案 2 :(得分:-3)

假设您没有任何其他情况发生的情况。在文件中:

sed -i 's/WOR/VWOR/g' <file_name>