Unix 基于字符串值使用awk从行中提取字符串
我有一个文本文件,数据如下:Unix 基于字符串值使用awk从行中提取字符串,unix,awk,gawk,Unix,Awk,Gawk,我有一个文本文件,数据如下: (832555,488012,0,17:31:32.541,2014-08-06 17:31:32.000,0,0,NULL,FBCD,"-6484620512517810993"etcetcetc 我想提取FBCD后的字符串,因此我的输出应为: FBCD,"-6484620512517810993"etcetc 我能够使用awk找到FBCD的位置: 但是我无法提取剩余的值。您的代码:substrFBCD,1200 将从char 1-200中剪切输入字符串。但是
(832555,488012,0,17:31:32.541,2014-08-06 17:31:32.000,0,0,NULL,FBCD,"-6484620512517810993"etcetcetc
我想提取FBCD后的字符串,因此我的输出应为:
FBCD,"-6484620512517810993"etcetc
我能够使用awk找到FBCD的位置:
但是我无法提取剩余的值。您的代码:substrFBCD,1200
将从char 1-200中剪切输入字符串。但是你给了FBCD作为输入字符串,FBCD只有长度4,这就是为什么你只有FBCD
事实上,格雷普生来就是为了提取东西,这对你有帮助吗
grep -oE 'FBCD.{1,196}' file
您的代码:substrFBCD,1200
将从char 1-200中剪切输入字符串。但是你给了FBCD作为输入字符串,FBCD只有长度4,这就是为什么你只有FBCD
事实上,格雷普生来就是为了提取东西,这对你有帮助吗
grep -oE 'FBCD.{1,196}' file
将awk与substr一起使用
awk '{print substr($0,index($0,"FBCD"),200)' file
使用sed
sed -e 's/^.*\(FBCD.\{200\}\).*/\1/' file
如果你想一直到队伍的尽头
awk '{print substr($0,index($0,"FBCD"))' file
sed -e 's/^.*\(FBCD\)/\1/' file
将awk与substr一起使用
awk '{print substr($0,index($0,"FBCD"),200)' file
使用sed
sed -e 's/^.*\(FBCD.\{200\}\).*/\1/' file
如果你想一直到队伍的尽头
awk '{print substr($0,index($0,"FBCD"))' file
sed -e 's/^.*\(FBCD\)/\1/' file
grep生来就是用来提取字符串的——这可能是有争议的,因为您用来提取字符串的grep的-o选项不存在POSIX@kent您使用了反勾号而不是quote@Jidder哦,是的,我没有测试,是一个打字错误,与降价代码块混淆。。。。谢谢。@1\u CR是正确的,grep生来就是为了打印包含regexp g/re/p的行。如今,GNU的人有他们自己的版本,递归地搜索文件,做早餐和其他各种事情。我对-o是否是个好主意持怀疑态度,但至少这不是一个明显的坏主意,不像试图找到工作。@EdMorton所以我应该说grep生来就是为了提取线条的。:grep生来就是用来提取字符串的——这可能是有争议的,因为您用来提取字符串的grep的-o选项不存在POSIX@kent您使用了反勾号而不是quote@Jidder哦,是的,我没有测试,是一个打字错误,与降价代码块混淆。。。。谢谢。@1\u CR是正确的,grep生来就是为了打印包含regexp g/re/p的行。如今,GNU的人有他们自己的版本,递归地搜索文件,做早餐和其他各种事情。我对-o是否是个好主意持怀疑态度,但至少这不是一个明显的坏主意,不像试图找到工作。@EdMorton所以我应该说grep生来就是为了提取线条的。:Substr不是那样工作的Substr不是那样工作的+1,但我不认为,200是有用的。我认为OP只是把它当作一个大的值来获取行的其余部分,因为他不知道如果把那个参数留空,他会得到什么。@EdMorton编辑了case,这是他想要的。+1,但我认为,200没有用。我认为OP只是把它当作一个大值来获取行的其余部分,因为他不知道如果把那个参数留空他会得到什么。@EdMorton编辑,以防这是他想要的。