Linux 匹配图案,然后转到下一个条件并打印详细信息

Linux 匹配图案,然后转到下一个条件并打印详细信息,linux,bash,shell,Linux,Bash,Shell,这是我的演示文件:demo.txt CP Used ----------------------------------- -------------- gyhjjjjjjjjjjjjj gdhdhsdjjsdjsd ----------------------------------- -------------- list: 21305 DP

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

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

DP                                     Used
-----------------------------------  --------------
asghjskkkkkkkkkkfe jfdkjcdf
ashdjdjksd
-----------------------------------  --------------
                         list:       203899
这里我想匹配DP,然后匹配列表并打印详细信息

预期产出为:

21305,"CP"
203899,"DP"

使用awk解析简单表:

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

21305,"CP" 203899,"DP" 21305,“CP” 203899,“DP”
与Cyrus sir的方法相同,在使用变量和对字符串
列表
值使用
$NF
方面略有不同,如下所示

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

不清楚,请重新将示例正确包装到代码标记中。在你的文章中也要展示你为解决这个问题所付出的努力。堆栈溢出不是一种代码编写服务。我们真的需要一个“Givez-mez-the-codez”堆栈交换。@jww,我不想在这里讨论,但如果一个人是新的编码或新的,我们可以给他/她学习的机会(至少他们可以有几个帖子),然后我们可以在这里推动他们更多地学习(我也同意)。简单地放弃选票会让人泄气(特别是像我这样不是专家但试图通过帮助别人来学习的人)。