作业帮 > 综合 > 作业

sed 替换echo "ABC

来源:学生作业帮 编辑:作业帮 分类:综合作业 时间:2024/05/08 13:06:19
sed 替换
echo "ABC
正则表达式写得有点问题,第二个是因为没有匹配的结果,在这种情况下sed默认打印出所有输入.你加个 -n 选项就看不到输出了.
之所以不能匹配,问题出在中间 \([^\(\)]*\) 这部分.这个表示 非 这些字符,即中间不能出现这些字符中的任意一个,而非看作一个整体.
其实,中间只需要判断 非 < 就行了,我改一下:
echo "abc5678"|sed 's/.*\([^
再问: 谢谢,总算知道原因了 但是中间可能还有别的标签,比如 ABClink5678 表示非时不能是字符串吗?
再答: 我也不知道如何在 [] 中将字符串看作一个整体。 暂时只想到个笨法子,先将第一次出现的字符串 替换为一个不可能在本行中出现的字符,比如换行符,然后再用你原来的老方法就可以了。 echo "ABClink5678"|\ sed 's//\n/;s/.*\([^\n]*\)\n.*/\1/'
再问: 谢谢!这种方法可以,也可以在后面加一个awk echo "ABClink5678"|\ sed 's/.*\(.*\)/\1/'|awk -F'' '{print $1}'