我有一个任务需要一些 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 设置为之前的值