无法在bash中的方括号内提取数据

时间:2015-12-17 17:52:37

标签: regex bash shell unix logic

我输入(output.txt几乎有2000行),如

lorem ipsum 
lorem ipsum
["a","b","c","d"]
lorem ipsum
lorem ipsum
["e","f","g","h"]

我的output1.txt应为

a
b
c
d
e
f
g
h

首先,我试图将[]中的所有值放在一个文件中。但最终我的目标是实现output1.txt。如果有人帮助我一次性完成(在[]中提取数据并删除“”和逗号并在每行中放置值,那将会很棒)

我的代码截至目前

    reg="\[([^]]+)\]"
    while IFS='' read -r line || [[ -n "$line" ]]; do
    if [[ $line = ~$reg ]] ; then echo "$line" >>      home/hdpsrvc/sandeep/hbase/output1.txt ; fi
    done < /home/hdpsrvc/sandeep/hbase/output.txt

文件不是在指定路径中创建的,也不是在终端上没有错误。我按照以下stackoverflow链接编写上面的代码

shell script. how to extract string using regular expressions Regular expression to extract text between square brackets

1 个答案:

答案 0 :(得分:0)

awk可以轻松完成此任务:

cd /home/hdpsrvc/sandeep/hbase

awk -F'[][," ]+' '/\[.*\]/{for (i=2; i<NF; i++) print $i}' output.txt > output1.txt
a
b
c
d
e
f
g
h