使用 sed 命令后保存文件

使用 sed 命令后保存文件

我正在使用以下命令替换yyyymmddYYYYMMDDHH24MISS的文件中的:

sed -e 's/\('yyyymmdd'\)/\('YYYYMMDDHH24MISS'\)/g' filename

在 PuTTY 中运行该命令后,它会显示带有替换值的文件,但它们不会反映我是否是more该文件。

我尝试使用-i,但它说

sed: illegal option -- i

有人可以建议我如何替换多个文件中的给定代码并保存它们吗?

答案1

尝试这个:

sed 's/yyyymmdd/YYYYMMDDHH24MISS/g' filename > changed.txt

或者,保持相同的文件名:

sed 's/yyyymmdd/YYYYMMDDHH24MISS/g' filename > changed.txt && mv changed.txt filename

答案2

您的sed命令仅将其结果发送到标准输出。您必须在后续命令中重定向它(而不是在同一命令中,例如sed 'sedcommand' file > file,因为这会在处理文件之前删除文件)。

您还可以通过管道将命令发送到ed而不是使用sed

for file in $filelist ; do
  echo -e '%s/yyyymmdd/YYYYMMDDHH24MISS/g\nw' | ed $file
done

它替换每一行 ( %),然后在分隔换行符 ( \n) 之后,将修改后的文件写入到位 ( w)。

答案3

在命令中使用-i选项sed

sed -ie 's/\('yyyymmdd'\)/\('YYYYMMDDHH24MISS'\)/g' filename

相关内容