2014-09-02 251 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