使用AWK附加评论

时间:2020-06-15 17:55:38

标签: awk

我有一个文件,其中包含三个字段id,名称和位置,如下所示。

###Need to hold
078:james:US
###Need for version 3
946:wilson:UK
678:Joe:AUS
###Automate to rev1
456:Henry:UK

我尝试过:

#!/bin/bash 
awk -F: /^[^#]/ {print $1}'
078 
946 
678
456

所需的输出:

078 - message "Need to hold"
946 - message "Need for version 3"
678 - message "Need for version 3"
456 - message "Automate to rev1"

我需要在上面的行中添加注释。如何解决?

2 个答案:

答案 0 :(得分:2)

尝试一下:

awk -F':' 'NF<3{h=$0;sub(/#*/,"",h);next}{printf "%s - message \"%s\"\n", $1,h}' file
078 - message "Need to hold"
946 - message "Need for version 3"
678 - message "Need for version 3"
456 - message "Automate to rev1"

答案 1 :(得分:2)

用于单行注释

$ awk -F: '/^#/ {c=$0; sub(/#+/,"", c); next} 
                {print $1,"- message", "\"" c "\""}' file

078 - message "Need to hold"
946 - message "Need for version 3"
678 - message "Need for version 3"
456 - message "Automate to rev1"

要获得多行支持,您需要积累评论。

说明::如果该行以井号开头,请删除该标志并将该行保存到变量c中,然后跳至下一行。打印由:分隔的第一个字段和消息标签,最后带有引号的变量c