Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/unix/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Unix 基于字符串值使用awk从行中提取字符串_Unix_Awk_Gawk - Fatal编程技术网

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编辑,以防这是他想要的。