首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在文本文件中返回字符串的一部分

在文本文件中返回字符串的一部分
EN

Unix & Linux用户
提问于 2016-04-04 22:01:41
回答 2查看 54关注 0票数 0

背景:

所有日志都转到csv进行mysql导入。

拥有大量的数据日志,如:

代码语言:javascript
复制
Moon,Srv-1,2016-04-04 06:59:48,Entry #103 (s) test (AlphaNum_Need_This_32_Char_Long1),Msg On (ref2357 : Act)
Moon,Srv-2,2016-03-04 06:59:48,Entry #2  SomeLongtest (AlphaNum_Need_This_32_Char_Long2),Msg On (ref2357 : Act)

问题:

  1. 如何提取: AlphaNum_Need_This_32_Char_Long1 AlphaNum_Need_This_32_Char_Long2

  1. 丢弃零件Entry #103 (s) test。=>的问题,本文可以用α,num,( { } [ ] ( ) / \ . < ># @ _ -的长度和字符进行很大的变化。

当前进展:

  • 可以使用sedawk提取所有其他字段。
  • 在Excel中,这将解决{其中文本为D4}:=MID(D4,SEARCH("),",D4)-32,32)的问题。

到目前为止,使用MS日志解析器,反转字符串,搜索计数32个字符等。

目标:不要使用Windows日志解析器,全部在Linux中完成。

EN

回答 2

Unix & Linux用户

回答已采纳

发布于 2016-04-04 22:16:33

代码语言:javascript
复制
sed -r 's/^.*\((.{32})\).*$/\1/' filename
票数 1
EN

Unix & Linux用户

发布于 2016-04-04 22:19:39

在Perl中,如果使用负索引,则可以从右边计数字符:

代码语言:javascript
复制
perl -aF, -lne 'print substr $F[3], -33, 32' < input
  • -n逐行读取输入
  • -a将输入拆分为@F数组。
  • -F指定要拆分什么
  • -l在打印中添加新行
票数 0
EN
页面原文内容由Unix & Linux提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://unix.stackexchange.com/questions/274285

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档