我有一个看起来像这样的文件:
# foo
100
202
# bar
330
119
111
# baz
# qux
193
我想把它变成:
foo:100
foo:202
bar:330
bar:119
bar:111
qux:193
我应该使用哪个命令?
答案 0 :(得分:2)
我建议awk。如果一行以#
开头,则将第二列保存到变量a
。如果列以变量a
的数字打印内容开头,并使用当前行(:
)附加$0
。
awk '/^#/{a=$2}; /^[0-9]/{print a":"$0}' file
输出:
foo:100 foo:202 bar:330 bar:119 bar:111 qux:193
答案 1 :(得分:1)
这可能适合你(GNU sed):
sed -rn '/^# /{s///;h;d};G;s/(.*)\n(.*)/\2:\1/p' file
如果模式空间(PS)中的行以#
后跟空格开头,请删除这些字符并将结果存储在保留空间(HS)中并删除该行。否则,将HS附加到PS,匹配引入的换行符两侧的值,并使用:
作为分隔符进行交换。