使用基于字符串值的awk从行中提取字符串

时间:2014-09-02 12:14:29

标签: 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

我可以使用FBCD找到awk的位置:

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

但我无法提取剩余的值。

2 个答案:

答案 0 :(得分:2)

使用awk with 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

答案 1 :(得分:1)

您的密码:substr("FBCD",1,200)

将从char 1 - 200剪切输入字符串。但是您将FBCD作为输入字符串,FBCD只有4长度,这就是您只有FBCD的原因。

事实上,grep诞生于提取事物,这对你有帮助吗?

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