我需要帮助编写以下脚本。如果当前行以#STOP#
开头,而前一行也以"#STOP#"
开头,则只需打印该行。
如果当前行以"#STOP#"
开头,而前一行也以"MSG#"
开头,将前一行连接到当前行。
输入文件:
#STOP# |package1| function1
#STOP# |package2| function2
#MSG# |package3| SQL1
#STOP# |package4| MapperBean
#MSG# |package3| SQL2
#STOP# |package4| MapperBean
#STOP# |package4| MapperBean
#STOP# |package5| ActionItem
期望的输出:
#STOP# |package1| function1
#STOP# |package2| function2
#STOP# |package4| MapperBean #MSG# |package3| SQL1
#STOP# |package4| MapperBean #MSG# |package3| SQL2
#STOP# |package4| MapperBean
#STOP# |package5| ActionItem
答案 0 :(得分:4)
awk
的一种方式:
$ awk '$1=="#MSG#"{msg=OFS $0;next}{print $0(msg?msg:"");msg=""}' file
#STOP# |package1| function1
#STOP# |package2| function2
#STOP# |package4| MapperBean #MSG# |package3| SQL1
#STOP# |package4| MapperBean #MSG# |package3| SQL2
#STOP# |package4| MapperBean
#STOP# |package5| ActionItem