Plo*_*ouf 1 text-processing csv
这是我要修改的数据示例:
John,,
bim,bam,boom
tim,tam,toom
lam,loom,lim
Mary,,
pam,pim,poom
dam,dim,doom*
Run Code Online (Sandbox Code Playgroud)
我试图实现这一目标:
John,bim,bam,boom
John,tim,tam,toom
John,lam,loom,lim
Mary,pam,pim,poom
Mary,dam,dim,doom
Run Code Online (Sandbox Code Playgroud)
当一个名字单独出现在一行上时,它会成为下面所有行中的一个新列,直到出现下一个具有相同模式的名字。
我想知道 awk 或其他工具是否可以提供帮助,但我有点迷茫。
我尝试创建一个条件(如果第 2 列和第 3 列为空,则执行某些操作)但现在对我来说这看起来有点复杂。
您正在考虑正确的路线:
我尝试创建一个条件(如果第 2 列和第 3 列为空,则执行某些操作)
具体来说,
awk
方法可以做到这一点)所以例如
awk -F, '$2=="" && $3=="" {pfx=$1; next} {print pfx "," $0}' file.csv
Run Code Online (Sandbox Code Playgroud)
或更惯用地使用FS
字段分隔符变量
awk -F, '$2=="" && $3=="" {pfx=$1; next} {$0 = pfx FS $0; print}' file.csv
Run Code Online (Sandbox Code Playgroud)
或(因为默认操作 - 当规则评估为 true 或1
- 是打印记录)
awk -F, '$2=="" && $3=="" {pfx=$1; next} {$0 = pfx FS $0} 1' file.csv
John,bim,bam,boom
John,tim,tam,toom
John,lam,loom,lim
Mary,pam,pim,poom
Mary,dam,dim,doom
Run Code Online (Sandbox Code Playgroud)