我有一个文件,其中包含三个字段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"