2014-09-02 146 views
0

我有数据为文本文件:提取字符串的字符串值

(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的位置:

awk '{print substr("FBCD",1,200)}' file.txt 

但我无法提取剩余的值。

+1

SUBSTR行不通的那样 – 2014-09-02 12:30:47

回答

2

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 
+0

+1,但我不认为',200'有用。我认为OP是用它作为一个很大的价值来获得剩下的部分,因为他不知道这就是他将这个论点留空的情况。 – 2014-09-02 12:48:38

+1

@EdMorton编辑的情况下,他是想要的。 – 2014-09-02 12:55:49

1

你的代码: - 200substr("FBCD",1,200)

将从焦炭1切断输入字符串。但您输入FBCD作为输入字符串,而FBCD只有长度4,这就是为什么您只获得FBCD

其实grep是天生提取的东西,会对你有帮助吗?

grep -oE 'FBCD.{1,196}' file 
+0

完美感谢一吨:) – ThePatBan 2014-09-02 12:24:04

+2

“grep是为了提取字符串而诞生的” - 这可能是有争议的,因为你正用来提取的'-o'选项不在POSIX – iruvar 2014-09-02 12:30:18

+0

@kent中,因为你使用了反引号而不是引用 – 2014-09-02 12:36:53