萨拉姆 以下是所需的输出:
RXOTG-136 VENEN6 0 VENEN6 1 VENEN7 0 VENEN7 1 RXOTG-137 TIVIK6 0 TIVIK6 1 RXOTG-138 KESTA1 0 KESTA1 1 KESTA2 0 KESTA2 1 KESTA3 0 KESTA3 1 RXOTG-139 KESTA4 0 KESTA4 1
我使用了以下命令
awk 'NF==1{a=$1; next}{ print val}'
但我得到的输出是
RXOTG-136 VENEN6 0 RXOTG-136 VENEN6 1 RXOTG-136 VENEN7 0 RXOTG-136 VENEN7 1 RXOTG-137 TIVIK6 0 RXOTG-137 TIVIK6 1 RXOTG-138 KESTA1 0 RXOTG-138 KESTA1 1 RXOTG-138 KESTA2 0 RXOTG-138 KESTA2 1 RXOTG-138 KESTA3 0 RXOTG-138 KESTA3 1 RXOTG-139 KESTA4 0 RXOTG-139 KESTA4 1
答案 0 :(得分:2)
awk 'NF==3{a=$1} NF==2{$1=a OFS $1} 1' file
由于重新分配$ 1~ $ 3,格式会发生变化,因此您可以使用column -t
格式化
awk 'NF==3{a=$1} NF==2{$1=a OFS $1} 1' file | column -t
答案 1 :(得分:0)
关注简单awk
可能对您有所帮助。
awk '!/^ /{val=$1} /^ /{$1=val OFS $1} 1' Input_file | column -t
答案 2 :(得分:0)
这可能适合你(GNU sed):
sed -r '1h;1b;s/^/\n/;G;:a;/\n\s(.*\n)(.)(.*\S+\s+\S+$)/s//\2\n\1\3/;ta;s/\n//;s/\n.*//;h' file
在保留空间中复制后打印第一行。对于所有后续行,添加换行符并追加上一行。将一个字符从前一行复制到当前行的前面,直到当前行的前面没有空格或前一行中只有两个字段。删除第一个引入的换行符并删除上一行的剩余部分。将当前行复制到保留空间,准备下次并打印当前行。