gpt4 book ai didi

shell - AWK 将空列替换为下一行的列值

转载 作者:行者123 更新时间:2023-12-01 22:47:36 27 4
gpt4 key购买 nike

我有以下示例文件,其中缺少列值,我想将其替换为同一列中的下一个可用值。

cat test.txt
11.2.0.1,ORA1,ORACLE
11.2.0.4,ORA2,ORACLE
11.2.0.3,ORA3,ORACLE
12.2.0.1,ORA4,ORACLE
,ORA5,ORACLE
,ORA6,ORACLE
12.2.0.2,ORA7,ORACLE
,MYS1,MYSQL
5.1,MYS2,MYSQL

这是我正在尝试做的事情:

 cat test.txt |awk '{printf("%s,%s,%s\n", $11,$3,$1);}'|awk -F',' 'BEGIN{OFS=","}
{
for (i=1; i<=NF; i++)
if ($i=="")
--Read next column value
--If next column is null, read futhur next
-- Assign next available value to $i
print
}'

预期输出:

11.2.0.1,ORA1,ORACLE
11.2.0.4,ORA2,ORACLE
11.2.0.3,ORA3,ORACLE
12.2.0.1,ORA4,ORACLE
12.2.0.2,ORA5,ORACLE
12.2.0.2,ORA6,ORACLE
12.2.0.2,ORA7,ORACLE
5.1,MYS1,MYSQL
5.1,MYS2,MYSQL

谢谢

最佳答案

你可以这样做:

awk -F, '$1==""{a[n++]=$0;next} n{for (i=0;i<n;i++) print $1 a[i]; n=0} 1' file

详情:

$1=="" {          # if the first field is empty
a[n++]=$0 # store the whole line at index n and increment n
next # jump to the next line
}

n { # if n isn't zero
for (i=0;i<n;i++) # loop over stored lines indexes
print $1 a[i] # and print lines starting with the current first field
n=0 # set n to 0
}

1 # true, print the current line

关于shell - AWK 将空列替换为下一行的列值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35235112/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com