我有一个 csv 文件让我们说几行
cat lines
1:abc
6:def
17:ghi
21:tyu
我想实现这样的目标
1:6:abc
6:17:def
17:21:ghi
21::tyu
试过下面的代码没有用
awk 'BEGIN{FS=OFS=":"}NR>1{nln=$1;cl=$2}NR>0{print $1,nln,$2}' lines
1::abc
6:6:def
17:17:ghi
21:21:tyu
你能帮忙吗?
最佳答案
这是一个潜在的 AWK 解决方案:
cat lines
1:abc
6:def
17:ghi
21:tyu
awk -F":" '{num[NR]=$1; letters[NR]=$2}; END{for(i=1;i<=NR;i++) print num[i] ":" num[i + 1] ":" letters[i]}' lines
1:6:abc
6:17:def
17:21:ghi
21::tyu
格式化:
awk '
BEGIN {FS=OFS=":"}
{
num[NR] = $1;
letters[NR] = $2
}
END {for (i = 1; i <= NR; i++)
print num[i], num[i + 1], letters[i]
}
' lines
1:6:abc
6:17:def
17:21:ghi
21::tyu
关于shell - awk获取下一行列的值并将其添加到shellscript中的当前行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/71522024/