gpt4 book ai didi

linux - 如果不同文件中相同位置的字段值为 "zero",则修改一个文件的字段值

转载 作者:太空宇宙 更新时间:2023-11-04 05:02:28 28 4
gpt4 key购买 nike

我有两个文件文件 A 和文件 B。文件 A 包含一些值 = 0 。根据文件 A“零”值的位置,文件 B 字段将被设为空“”。输出和输入的示例如下所示。我大致了解了如何做,但不确定,有人可以帮忙吗?谢谢。

File A

ABDC1

9.88E2 9.00E1 6.50E2 5.40E1 7.43E1

6.55E2 9.89E2 0.00E0 5.45E2 7.76E1

9.88E1 9.00E2 0.00E0 5.45E1 7.67E2

6.55E2 9.89E1 5.44E2 5.45E2 9.88E2

0.377E2

EFG3

9.88E2 9.00E2 0.00E0 5.54E1 7.67E2

7.55E2 9.98E2 5.44E2 4.54E2 0.00E0

5.88E2 9.60E1 0.00E0 5.40E1 4.67E2

4.55E2 0.00E0 5.45E2 4.00E0 9.88E2

6.43E2


File B


ABDC1

8.00E0 9.40E0 6.30E0 5.43E2 7.20E1

5.00E0 9.80E1 6.50E1 5.50E1 7.76E1

9.00E0 9.70E1 6.70E1 5.54E2 7.67E2

6.50E1 9.98E2 5.48E2 5.45E2 9.88E2

6.76E1

EFG3

4.88E2 9.30E1 6.80E1 5.30E1 7.60E1

6.55E2 9.80E1 5.40E1 4.50E1 7.70E1

1.88E2 6.00E0 1.00E1 5.00E0 4.60E1

5.50E1 5.40E1 5.40E1 4.50E1 9.80E1

6.65E2


Output expected:

FILE 3 (Output):


ABDC1

8.00E0 9.40E0 6.30E0 5.43E2 7.20E1

5.00E0 9.80E1 5.50E1 7.76E1

9.00E0 9.70E1 5.54E2 7.67E2

6.50E1 9.98E2 5.48E2 5.45E2 9.88E2

6.76E1

EFG3

4.88E2 9.30E1 5.30E1 7.60E1

6.55E2 9.80E1 5.40E1 4.50E1

1.88E2 6.00E0 5.00E0 4.60E1

5.50E1 5.40E1 4.50E1 9.80E1

6.65E1

我正在尝试执行以下操作:file4.txt 和 file3.txt 与上面的文件 A 和 B 相同

 #!/bin/bash

cp file4.txt temp.txt
touch temp2.txt

i=1

while IFS=' ' read -r f1 f2 f3 f4 f5


do

if [ $f$i = "0.00E0" ]

then

while IFS=' ' read -r r1 r2 r3 r4 r5

do

sed 's/$r$i/""/g' temp.txt >> temp2.txt


done <file4.txt

fi

let "i=i+1"

done <file3.txt

最佳答案

您可以使用这个 awk:

awk 'FNR==NR && NF==1{s=$1;next}
FNR==NR{for(i=1; i<=NF; i++) if ($i=="0.00E0") a[s,FNR*100+i]++; next}
NF==1{s=$1;print s;next}
NF==5{for(i=1; i<=NF; i++) if (a[s,FNR*100+i]==1) $i=""
} 1' fileA fileB | | column -t
ABDC1
8.00E0 9.40E0 6.30E0 5.43E2 7.20E1
5.00E0 9.80E1 5.50E1 7.76E1
9.00E0 9.70E1 5.54E2 7.67E2
6.50E1 9.98E2 5.48E2 5.45E2 9.88E2
EFG3
4.88E2 9.30E1 5.30E1 7.60E1
6.55E2 9.80E1 5.40E1 4.50E1
1.88E2 6.00E0 5.00E0 4.60E1
5.50E1 5.40E1 4.50E1 9.80E1

关于linux - 如果不同文件中相同位置的字段值为 "zero",则修改一个文件的字段值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28133182/

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