我的数据集如下所示:
lastname|name|hash
A|B|C
D|E|
G|H|I J
Run Code Online (Sandbox Code Playgroud)
我需要awkbash中这种格式的数据(最好带有)。
{C}% B A
{I}% H G
{J}% H G
Run Code Online (Sandbox Code Playgroud)
换句话说:仅当hash我想输出的第三列 ( )有值时。第三列 ( hash) 中可以有 1-n 个值,对于每个值,输出应如下所示:
{hash}% name lastname
BEGIN {
FS="|"
}
NR>1 && NF==3 {
split($3, a, " ")
for (i=1;i in a;i++) printf("{%s}%% %s %s\n", a[i], $2, $1)
}
Run Code Online (Sandbox Code Playgroud)
我认为以上awk是不言自明的。要打印文字%,printf我们必须使用%%. 测试:
> awk -f tst.awk file
{C}% B A
{I}% H G
{J}% H G
Run Code Online (Sandbox Code Playgroud)