Awk:沿列扩展第一个字段

Awk:沿列扩展第一个字段

我有一个任务需要一些 awk 脚本:

假设我有一个文件:

A,under1
,under2
,under3
,under4
,under5
B,new1
,new2
,new3
C,sm1
,sm2

我怎样才能使用 awk 让它看起来像这样?

A,under1
A,under2
A,under3
A,under4
A,under5
B,new1
B,new2
B,new3
C,sm1
C,sm2

换句话说,我想沿着列扩展第一个字段。

答案1

单程:

$ awk -F, '!$1{$1=p;}$1{p=$1;}1' OFS=, file

$1{p=$1;}当$1有值时,将其存储在变量p中

!$1意味着 1 美元是空的。当 $1 为空时,将 $1 设置为包含最后一个 $1 值的 p。

1打印每一行。

答案2

另一个解决方案:

awk -F, '{$1=$1?P=$1:P;print}' OFS=,

如果 $1 不为空,则设置P为 $1。P否则将 $1 设置为之前的值

相关内容