如何使用另一个文件第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}"
我试图用文件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}"