替换文件中的正斜杠“/”

替换文件中的正斜杠“/”

我正在使用vi编辑器,文件中有这样的数据。

05/08/2017,U,01,116326001 
05/08/2017,U,01,116226001 
05/08/2017,U,01,116726323 
05/08/2017,U,01,116236001

我想替换日期(第一列)。

例如:05/08/201704/03/2017

提前致谢。

答案1

Vi(或 Vim)内部:

:%s#^05/08/2017#04/03/2017#

您可能必须先按Esc才能退出插入模式。

就像在 中一样sed,在使用该命令进行替换时,您可以选择任意字符作为模式分隔符s。这里我选择的是#.

由于 . ,模式 .^05/08/2017将在行的开头匹配^。这可以防止它意外匹配任何行中的其他位置。

使用通常的/模式分隔符,我们得到了一个很好的例子,称为“牙签倾斜综合症”:

:%s/^05\/08\/2017/04\/03\/2017/

替换命令将在当前 Vi 缓冲区中的所有行上执行,因为我们%在开始时使用“范围”(%与 相同1,$,即“从第一行到最后一行”)。

答案2

简单地与sed工具:

sed -i 's~^[0-9]*/[0-9]*~04/03~' file
  • -i选项,就地修改文件

处理后的内容file

04/03/2017,U,01,116326001 
04/03/2017,U,01,116226001 
04/03/2017,U,01,116726323 
04/03/2017,U,01,116236001

答案3

awk 选项:

awk -F, '{ printf "%s","04/03/2017";for (i=2;i<=NF;i++) {printf ",%s",$i } }' filename

打印want的日期,然后循环并打印由 , 分隔的剩余字段

相关内容