替换文件特定行号中的路径
Replace path in specific line number of file
我有一个文件包含:
Source defaults file; edit that file to configure this script.
AUTOSTART="all"
STATUSREFRESH=10
OMIT_SENDSIGS=0
if test -e /etc/default/openvpn ; then
. /etc/default/openvpn
fi
我想将第 5 行中的路径 /etc/default/openvpn
更改为 /mnt/data/default/openvpn
第 6 行也是如此。
我不能使用 sed -i '5s/etc/default...'
,
使用 awk 我无法替换文件中的结果。
有人有想法吗?
谢谢。
尝试过的命令:
var1='/etc/default/openvpn'
var2='/mnt/data/default/openvpn'
sed -i '5s/'$var'/'$var2'/' files.txt
sed -i '5s/etc/default/openvpn/mnt/data/default/openvpn/' files.txt
sed -i '5s/'/etc/default/openvpn'/'/mnt/data/default/openvpn'/g' files.txt
awk 'NR==5 { sub("/etc/default/openvpn", "/etc/default/openvpn", [=11=]); print }' files.txt
使用 awk,我无法保存文件中的更改
这里的问题是正在使用的分隔符,因为它会与 sed
的默认分隔符冲突。
要解决此问题,您可以将正在使用的分隔符更改为未出现在您的数据中的任何其他字符或转义默认分隔符 \/
。
使用sed
$ sed -i.bak 's|/etc/default/openvpn|/mnt/data/default/openvpn|' input_file
$ cat input_file
Source defaults file; edit that file to configure this script.
AUTOSTART=all
STATUSREFRESH=10
OMIT_SENDSIGS=0
if test -e /mnt/data/default/openvpn ; then
. /mnt/data/default/openvpn
fi
我有一个文件包含:
Source defaults file; edit that file to configure this script.
AUTOSTART="all"
STATUSREFRESH=10
OMIT_SENDSIGS=0
if test -e /etc/default/openvpn ; then
. /etc/default/openvpn
fi
我想将第 5 行中的路径 /etc/default/openvpn
更改为 /mnt/data/default/openvpn
第 6 行也是如此。
我不能使用 sed -i '5s/etc/default...'
,
使用 awk 我无法替换文件中的结果。
有人有想法吗?
谢谢。
尝试过的命令:
var1='/etc/default/openvpn'
var2='/mnt/data/default/openvpn'
sed -i '5s/'$var'/'$var2'/' files.txt
sed -i '5s/etc/default/openvpn/mnt/data/default/openvpn/' files.txt
sed -i '5s/'/etc/default/openvpn'/'/mnt/data/default/openvpn'/g' files.txt
awk 'NR==5 { sub("/etc/default/openvpn", "/etc/default/openvpn", [=11=]); print }' files.txt
使用 awk,我无法保存文件中的更改
这里的问题是正在使用的分隔符,因为它会与 sed
的默认分隔符冲突。
要解决此问题,您可以将正在使用的分隔符更改为未出现在您的数据中的任何其他字符或转义默认分隔符 \/
。
使用sed
$ sed -i.bak 's|/etc/default/openvpn|/mnt/data/default/openvpn|' input_file
$ cat input_file
Source defaults file; edit that file to configure this script.
AUTOSTART=all
STATUSREFRESH=10
OMIT_SENDSIGS=0
if test -e /mnt/data/default/openvpn ; then
. /mnt/data/default/openvpn
fi