匹配模式,然后转到下一个条件并打印详细信息

时间:2018-06-19 03:22:47

标签: linux bash shell

这是我的演示文件:Demo.txt

CP                                  Used
-----------------------------------  --------------
gyhjjjjjjjjjjjjj
gdhdhsdjjsdjsd
-----------------------------------  --------------
                        list:        21305 

DP                                     Used
-----------------------------------  --------------
asghjskkkkkkkkkkfe jfdkjcdf
ashdjdjksd
-----------------------------------  --------------
                         list:       203899

在这里,我想匹配DP,然后匹配列表并打印详细信息。

预期输出为:

21305,"CP"
203899,"DP"

2 个答案:

答案 0 :(得分:3)

用awk解析一个简单的表:

awk '$2=="Used"{x=$1}; $1=="list:"{print $2",\""x"\""}' Demo.txt
  • 如果第2列包含Used,则将第1列的内容保存到变量x
  • 如果第1列包含list:,则打印第2列和变量x的内容。

输出:

21305,"CP"
203899,"DP"

答案 1 :(得分:0)

与Cyrus先生相同的方法,使用变量和使用$NF字符串list值略有不同,如下所示。

awk -v s1="\"" -v s2="," '/Used/{val=$1;next} /list:/{print $NF s2 s1 val s1;val=""}'  Input_file