sed命令提取文本内容 50

1.txt内容:123abc123"def"111123"ghi"两个问题1.怎么用sed提取匹配字符串后面n个字符,如匹配1.txt里的123字符串后面3个字符串,全局... 1.txt内容:
123abc
123"def"111123"ghi"

两个问题
1.怎么用sed提取匹配字符串后面n个字符,如匹配1.txt里的123字符串后面3个字符串,全局匹配(一行有多个123都匹配123后面字符串出来)结果如下:
abc
"de
"gh

可以的话也把匹配字符串前面n个字符的代码也写出来看看

2.怎么用sed提取匹配字符串后面英文双引号里面的内容,如匹配1.txt里的123字符串后面的两个英文双引号里的内容出来,结果如下:
def
ghi
展开
 我来答
cnbubble
2018-10-22 · TA获得超过2606个赞
知道大有可为答主
回答量:1990
采纳率:83%
帮助的人:749万
展开全部

1.由于sed里面不支持非贪婪模式,所以第一个写的看起来挺复杂,不过终于实现要求了:

对写前面的N个字符,如果Sed支持环视会很方便,但估计是不支持了。

2. 第二个仿照第一个就能写出来():

解释一下第一个:

:a  一个标记,用来跳转的

/123/!bb   ——如果搜不到123 ,跳转的b标签,即末尾

/^123/!{  }   ——如果123 不是在首位,则执行{  }中的命令

s/.(.*)/\1/  ——用替换的方法 删掉第一个字符

ba  ——跳转到a标签【a放到第二句,即第一、二条命令颠倒一下可能更好一些】  

h——将内容复制到保持空间(相当于将变量内容放到一个临时变量中,因为有命令会改变字符串,但是原来的字符还要继续处理)

s命令——打印123后面的三个字符

g——将保持空间中的内容再拿过来

s命令——删除123和后面的三个字符,剩余的字符继续处理

/123/ba——如果剩余的字符串中还有123,则跳转到a标签处

:b——b标签

追问
你好,很感谢你的回答,能把代码贴出来吗,图片看不清标点符号
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式