感谢@don_crissti 和@Archemar。我认为我的问题不是上述问题的重复。
这是一个输入示例。编辑:所有部分都有值。我在副标题中添加了另一个复杂性(我应该这样做)。
DATA1
NAME: A (X)
12,1
13,2
14,4
NAME: B (X)
21,2
22,3
NAME: C (X)
24,4
所需的输出应该类似于
DATA1
A 12,1
A 13,2
A 14,4
B 21,2
B 22,3
C 24,4
答案1
看来你的输出分隔符是 4 个空格,所以这就是这个例子使用的 - 将其更改为你需要的,例如 TAB,OFS="\t"
awk 'NR==1 || NF==0 {print; next} # main heading and blank lines
$1=="NAME:" {name=$2; next} # section name/header
{print name, $1} # data lines
' OFS=" " file
输出:
DATA1
A 12,1
A 13,2
A 14,4
B 21,2
B 22,3
C 24,4
答案2
这是 sed。我不推荐它
sed -n '
1 {p; n}
/^[[:blank:]]*$/ {p; n}
/^NAME: \+/ {s///; h; n}
{H; g; s/\n/ /; p; s/ .*//; h}
' file
它的作用与 Peter 的 awk 命令的作用相同,只是 sed 只有一个变量:保留空间。