免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 2803 | 回复: 8

[文本处理] linux如何截取不固定的字符串? [复制链接]

论坛徽章:
0
发表于 2019-05-06 15:49 |显示全部楼层
5可用积分
<result>SUCCESS</result>

这是一个字符串,我需要获取SUCCESS字符,但是有的时候不一定是SUCCESS(7个字符),也有可能是<result>UNSTABLE</result>(8个字符),就是说字符不固定,但是我只要两个尖括号里边的内容就行,最好用sed或awk,请问怎么截取?谢谢!

论坛徽章:
0
发表于 2019-05-06 15:49 |显示全部楼层
本帖最后由 jzsjm1002 于 2019-05-06 16:24 编辑
  1. cat file
  2. <result>SUCCESS</result>
  3. <result>UNSTABLE</result>

  4. sed -r 's/<([^>]+)>([^><]+)<\/\1>/\2/' file
  5. SUCCESS
  6. UNSTABLE

  7. awk '{print gensub(/<[^>]+>([^><]+)<\/[^>]+>/,"\\1","1",$0)}' file
  8. SUCCESS
  9. UNSTABLE
复制代码

论坛徽章:
15
2015年迎新春徽章
日期:2015-03-04 09:57:09操作系统版块每日发帖之星
日期:2016-08-10 06:20:00操作系统版块每日发帖之星
日期:2016-07-16 06:20:00操作系统版块每日发帖之星
日期:2016-06-04 06:20:00操作系统版块每日发帖之星
日期:2016-03-14 06:20:00操作系统版块每日发帖之星
日期:2016-01-20 06:20:00操作系统版块每日发帖之星
日期:2015-12-23 06:20:00操作系统版块每日发帖之星
日期:2015-11-04 06:20:00每日论坛发贴之星
日期:2015-10-21 06:20:00操作系统版块每日发帖之星
日期:2015-10-21 06:20:00操作系统版块每日发帖之星
日期:2015-10-18 06:20:00操作系统版块每日发帖之星
日期:2015-07-13 23:17:29
发表于 2019-05-06 16:24 |显示全部楼层
本帖最后由 james90404 于 2019-05-06 16:26 编辑

本来不想回的...
你这问题用shell其实瞒好实现的

#!/bin/bash

str="<result>SUCCESS</result>"

str=${str#<*>}
str=${str%<\/*>}

echo $str

sed的话就...

echo "<result>SUCCESS</result>" | sed -E "s/<.*>(.*)<\/.*>/\1/g"

论坛徽章:
0
发表于 2019-05-06 16:31 |显示全部楼层
谢谢各位!

论坛徽章:
0
发表于 2019-05-06 16:31 |显示全部楼层
谢谢各位!

论坛徽章:
8
2016科比退役纪念章
日期:2018-10-24 08:24:0115-16赛季CBA联赛之北控
日期:2019-03-12 14:34:562016科比退役纪念章
日期:2019-04-01 10:33:0915-16赛季CBA联赛之山东
日期:2019-04-17 12:46:3215-16赛季CBA联赛之广夏
日期:2019-05-09 16:40:4015-16赛季CBA联赛之广夏
日期:2019-10-10 15:33:4015-16赛季CBA联赛之辽宁
日期:2019-10-15 08:37:0615-16赛季CBA联赛之北控
日期:2021-03-30 15:53:34
发表于 2019-05-07 08:15 |显示全部楼层
  1. echo "<result>SUCCESS</result>" |grep -Po '(?<=>).+(?=</)'
复制代码

论坛徽章:
0
发表于 2019-05-13 14:47 |显示全部楼层
回复 1# dx8439

echo '<result>sucess</result>' | sed -n 's#<[^>]*>##gp'

# <[^>]*>可以匹配到<>和</>的标签,将它们替换掉就可以得到除去标签的字符串。

论坛徽章:
0
发表于 2019-05-13 14:47 |显示全部楼层
回复 1# dx8439

echo '<result>sucess</result>' | sed -n 's#<[^>]*>##gp'

# <[^>]*>可以匹配到<>和</>的标签,将它们替换掉就可以得到除去标签的字符串。

论坛徽章:
0
发表于 2019-05-13 14:47 |显示全部楼层
回复 1# dx8439

echo '<result>sucess</result>' | sed -n 's#<[^>]*>##gp'

# <[^>]*>可以匹配到<>和</>的标签,将它们替换掉就可以得到除去标签的字符串。
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP