SHELL SED编辑器 编辑input文件 替换\OU为ou,然后在该行后面追加we find \OU,不知道,为什么老报错

kuaidi.ping-jia.net  作者:佚名   更新日期:2024-04-19
shell中sed替换怎么才能将被替换的变量中存在转义符号“\”

这个是正则表达式和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

s命令没有结束,格式是这样的:s/A/B/ 结尾也还要有 / 符号的。当然写成 s#A#B# 也可以。
试试这个:
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吧