我正在使用以下命令替换yyyymmdd
我YYYYMMDDHH24MISS
的文件中的:
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