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 展开
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 展开
1个回答
展开全部
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标签
追问
你好,很感谢你的回答,能把代码贴出来吗,图片看不清标点符号
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询