gpt4 book ai didi

bash - 使用 awk 或 sed 命令循环从文件中打印大量特定行

转载 作者:行者123 更新时间:2023-12-02 00:48:56 24 4
gpt4 key购买 nike

我有这个带有 ID 名称的大 txt 文件。它有 2500 行,一列。我们称它为 file.txt

H3430
H3467
H9805

另外,我还有一个文件,index.txt,里面有 390 个数字:

1
4
9
13
15

这些数字是我必须从 file.txt 中提取的(ID)行数。我需要生成另一个文件,让我们称之为 newfile.txt,其中只有 index.txt 要求的特定行中的 390 个 ID(列表的第一个 ID、第四个、第九个等等)。

因此,我尝试执行以下循环,但没有成功。

num=$'index.txt'
for i in num
do
awk 'NR==i' "file.txt" > newfile.txt
done

我对这件事一窍不通……所以,我需要一些帮助。即使是我的循环或您建议的新解决方案。谢谢:)

最佳答案

让我们创建一个示例文件,使用 seq 模拟您的 2500 行文件:

$ seq 2500 > /tmp/2500

并使用您的示例将行号打印在名为 390 的文件中:

$ echo "1
4
9
13
15" > /tmp/390

您可以通过将行号读入数组并打印该数组中的行来打印文件 2500 中的第 N 行:

$ awk 'NR==FNR{ a[$1]++; next} a[FNR]' /tmp/390 /tmp/2500

您还可以使用 sed 命令文件:

$ sed 's/$/p/' /tmp/390 > /tmp/sed_cmd
$ sed -n -f /tmp/sed_cmd /tmp/2500

使用 GNU sed,您可以执行 sed 's/$/p/'/tmp/390 | sed -n -f -/tmp/2500 但这在 OS X 上不起作用:-(

你可以这样做:

$ sed -n -f <(sed 's/$/p/' /tmp/390) /tmp/2500

关于bash - 使用 awk 或 sed 命令循环从文件中打印大量特定行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41643205/

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