比如grep本来输出下面这一行:
adkj2 232dslasd [email protected] sadh
我该如何使用sed命令让他只输出
[email protected]
呢?
sed '/[email protected]/ s/.* \([^ ]*@163.com\) .*/\1/' file.txt
/[email protected]/
先正则匹配过滤出包含[email protected]的行,格式: /正则/
再用替换命令 s/.../.../ 处理,\1 引用前面用 \( \) 括起来的组。
sed: -e 表达式 #1, 字符 1: 未知的命令:“'”
这个是什么意思?
不知道,我在Ubuntu下运行ok。
你确认命令跟我的一样?
# echo "adkj2 232dslasd [email protected] sadh"|sed '/[email protected]/ s/.* \([^ ]*@163.com\) .*/\1/'
[email protected]
哦,我看网上说的,都在 ' 前面加了一个\,结果怎么都不对
还是你这个对,谢谢啦~
btw,为什么他们都加了一个 \ 呢?
才看到...不明白你的意思。
本回答被提问者采纳