使用 AWK 附加注释

  • 本文关键字:注释 AWK 使用 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"

我需要将注释附加到如上所示的行中。如何解决?

表示单行注释

$ 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

试一试:

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"

最新更新