SHELL SED编辑器 编辑input文件 替换\OU为ou,然后在该行后面追加we find \OU,不知道,为什么老报错
kuaidi.ping-jia.net 作者:佚名 更新日期:2024-04-19
shell中sed替换怎么才能将被替换的变量中存在转义符号“\”
试试这个:
sed -n '/\\OU/{s/\\OU/ou/;a\we find \OU};q' input
PS: 默认sed会逐行处理直至文件末尾,所以搜索到匹配行并处理完毕后,用q命令退出sed处理会缩短执行时间的,在文件很大时尤为明显。
用 sed '/\OU/s,\OU,ou;a\we find \OU' 试试
a\后面的会被sed直接理解成追加内容 所以报匹配错误
如果你要给'we find \OU'这句话加上单引号的,就把sed外围的单引号换成双引号"
sed '/\\OU/ s/\\OU/ou/g;a\we find \\OU' input
g整行的\OU都会被替换。如仅仅替换第一个\OU,就去掉g吧
这个是正则表达式和sed的用法, 每个程序的用法都不一样的, 能否看一下my网名啊?这个问题帮助解决一下的 哦 !
sed是行编辑器,用这个工具非常困难。可以参考以下脚本:
#!/bin/bash
while read line
do
if echo $line | grep 'Hour$' >/dev/null; then
echo $line | tr -d '
'
else
echo $line
fi
done < $1
1,将上面脚本保存为fuck.sh
2,chmod 755 fuck.sh
3,./fuck.sh file
试试这个:
sed -n '/\\OU/{s/\\OU/ou/;a\we find \OU};q' input
PS: 默认sed会逐行处理直至文件末尾,所以搜索到匹配行并处理完毕后,用q命令退出sed处理会缩短执行时间的,在文件很大时尤为明显。
用 sed '/\OU/s,\OU,ou;a\we find \OU' 试试
a\后面的会被sed直接理解成追加内容 所以报匹配错误
如果你要给'we find \OU'这句话加上单引号的,就把sed外围的单引号换成双引号"
sed '/\\OU/ s/\\OU/ou/g;a\we find \\OU' input
g整行的\OU都会被替换。如仅仅替换第一个\OU,就去掉g吧