如何使用另一个文件第n行的值来剪切文件的第n行?

How to cut the nth line of file by using the value of the nth line from another file?

我试图用文件B第一行的值剪切文件A的第一行,文件A的第二行用文件B第二行的值等等...

我试过这段代码:

while IFS= read -r line; do
  cut -c $line- file.A
done < file.B >out.txt

问题是,bash 使用第一行的值从文件 A 中删除所有行,然后使用文件 B 的第二个值从文件 A 中删除所有行...

有人可以帮助我吗?

您必须逐行阅读这两个文件。这可以通过一个额外的文件描述符来完成

while IFS= read -r a && IFS= read -ru3 b; do
  cut -c "$a"- <<< "$b"
done < file.A 3< file.B > out.txt

在这里您还可以使用 bash 内置插件而不是 cut 来使脚本 运行 更快一些:

while IFS= read -r a && IFS= read -ru3 b; do
  printf %s\n "${b:a-1}"
done < file.A 3< file.B > out.txt

上面的两个命令都假定索引为 1,因为您问题中的代码也是如此。如果您使用基于 0 的索引,请将循环体更改为

cut -c "$((a+1))"- <<< "$b"

printf %s\n "${b:a}"