shell - awk获取下一行列的值并将其添加到shellscript中的当前行

标签 shell file unix awk delimiter

我有一个 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/

相关文章:

linux - 在文本文件的第一行之后添加定义的变量

sql-server - 如何将数据从 SQL Server 数据库传输到 Oracle 数据库

linux - 如何在没有任何用户配置的情况下启动 shell?

shell - 配置 nix-shell 以使用 Bash 以外的 shell?

C#:运行 shell 命令时出现问题

java - 通过java运行ab-initio图?

java - 字节数组到文件对象而不保存到磁盘

android - 出现错误,例如 APK META-INF/LICENSE 中复制的重复文件

file - 从一个文件向RabbitMQ发布多条消息

java - 如何在 Unix 上获取 Java 中所有已安装文件系统的列表?