Linux,捕获两个单词之间的单词

时间:2014-10-13 10:32:49

标签: unix

我有一个文件:

file.txt的

101|aaa {rating=1, dept=10, date=10/02/2013, com=11}
106|bbb {rating=2, dept=11, date=10/03/2013, com=11}
103|vvv {rating=3, dept=12, date=10/03/2013, com=11}
102|aaa {rating=1, dept=10, date=10/04/2013, com=11}
109|bbb {rating=2, dept=11, date=10/05/2013, com=11}
104|bbb {rating=2, dept=11, date=10/07/2013, com=11}

我正在基于:

来加油
for i in  `cat file.txt | grep -i "|aaa "`
do
    echo `echo $i|cut -d' ' -f1`"|" `sed -n '/date=/,/, com/p' $i` >> output.txt
done

发生此错误

"/sysdate=/,/systime/p: No such file or directory"

请帮帮我?

输出应为:

output.txt的

101|aaa|10/02/2013
102|aaa|10/04/2013

1 个答案:

答案 0 :(得分:1)

对于这些情况,

awk更好:

$ awk -F"[ =,]" -v OFS="|" '/aaa/{print $1, $9}' a
101|aaa|10/02/2013
102|aaa|10/04/2013

这会将字段分隔符设置为空格=,,并且只要在该行中找到文本aaa,就会获取第一个和第9个字段。