我有一个像这样的文件:
aaa b b ccc 345
ddd fgt f u 3456
e r der der 5 674
如您所见,我们分离列的唯一方法是找到只有一个或多个空格的列。我们如何识别这些列并将其替换为唯一的分隔符,例如,
。
aaa,b b,ccc,345
ddd,fgt,f u,3456
e r,der,der,5 674
注意:
如果我们发现所有具有一个或多个空格的连续列(没有其他内容)并将其替换为,
(所有列),则将解决问题。
对问题的更好解释是josifoski
:对于矩阵字符的每个块,如果所有块都是“空格”,则应在每行上将所有块垂直替换为一个。
$ cat tst.awk
BEGIN{ FS=OFS=""; ARGV[ARGC]=ARGV[ARGC-1]; ARGC++ }
NR==FNR {
for (i=1;i<=NF;i++) {
if ($i == " ") {
space[i]
}
else {
nonSpace[i]
}
}
next
}
FNR==1 {
for (i in nonSpace) {
delete space[i]
}
}
{
for (i in space) {
$i = ","
}
gsub(/,+/,",")
print
}
$ awk -f tst.awk file
aaa,b b,ccc,345
ddd,fgt,f u,3456
e r,der,der,5 674
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句