我有一个文件,其中包含三个字段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"
我需要在上面的行中添加注释。如何解决?
答案 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
。