sed 替换echo "ABC5678"|\sed 's/.*\([^\(\)]*\).*/\1/'结果为 ABCecho "abc5678"|\sed 's/.*\([^\(\)]*\).*/\1/'结果就是abc5678了,请问改成小写有什么区别吗?我想获取和第一个之间的字符串,

来源:学生作业帮助网 编辑:作业帮 时间:2024/05/03 01:03:47
sed 替换echo

sed 替换echo "ABC5678"|\sed 's/.*\([^\(\)]*\).*/\1/'结果为 ABCecho "abc5678"|\sed 's/.*\([^\(\)]*\).*/\1/'结果就是abc5678了,请问改成小写有什么区别吗?我想获取和第一个之间的字符串,
sed 替换
echo "ABC5678"|\
sed 's/.*\([^\(\)]*\).*/\1/'
结果为 ABC
echo "abc5678"|\
sed 's/.*\([^\(\)]*\).*/\1/'
结果就是abc5678了,
请问改成小写有什么区别吗?
我想获取和第一个之间的字符串,

sed 替换echo "ABC5678"|\sed 's/.*\([^\(\)]*\).*/\1/'结果为 ABCecho "abc5678"|\sed 's/.*\([^\(\)]*\).*/\1/'结果就是abc5678了,请问改成小写有什么区别吗?我想获取和第一个之间的字符串,
正则表达式写得有点问题,第二个是因为没有匹配的结果,在这种情况下sed默认打印出所有输入.你加个 -n 选项就看不到输出了.
之所以不能匹配,问题出在中间 \([^\(\)]*\) 这部分.这个表示 非 这些字符,即中间不能出现这些字符中的任意一个,而非看作一个整体.
其实,中间只需要判断 非 < 就行了,我改一下:
echo "abc5678"|sed 's/.*\([^