gpt4 book ai didi

bash - 在另一个文件中查找文件中的行索引

转载 作者:行者123 更新时间:2023-11-29 09:37:37 25 4
gpt4 key购买 nike

我正在尝试用另一个文件中的位置行号 替换一个文件中的行,该文件包含第一个文件成员的唯一元素。

例如

file1.txt
----------
A
A
A
B
B
C
C
C

第二个文件是

labels.txt
----------
A
B
C

然后我试图获得以下输出:

1
1
1
2
2
3
3
3

我尝试了 grep 的一些变体,但没有任何一个可以正确地做到这一点。

在 labels.txt 中获取 file1.txt 中每个字母的行号工作正常:grep -n A labels.txtgrep -n B labels.txt

但是当我尝试将这两个文件作为输入时:grep -n file1.txt labels.txt 控制台上没有输出。

这在 Python 或其他语言中当然非常简单,但是它的 shell 版本会非常有用。型号等)。

最佳答案

awk 'FNR==NR{a[$0]=NR;next}{print a[$0]}' labels.txt file1.txt

文件参数顺序很重要。在解析第一个输入 (FNR==NR) 时,我们将行号 (NR) 存储到一个以行值 (A,B etc)。然后在解析第二个时,这意味着当 FNR==NR 为假时,我们打印我们找到的行的存储值。

关于bash - 在另一个文件中查找文件中的行索引,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42514084/

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