在 shell 脚本中同时从两个文件中逐行读取

ALB*_*LBI 5 bash shell file

我有两个文件:

一:/tmp/starting有以下内容:

15
30
45
Run Code Online (Sandbox Code Playgroud)

二:/tmp/ending有以下内容:

22
35
50
Run Code Online (Sandbox Code Playgroud)

我想同时逐行读取这些文件并在另一个命令中使用它们。例如,

sed -n '15,22p' myFilePath
sed -n '30,35p' myFilePath
sed -n '45,50p' myFilePath
Run Code Online (Sandbox Code Playgroud)

如何在 Shell 脚本中执行此操作?

Joh*_*024 5

您可以从paste命令中获取所需的字符串:

$ paste -d, starting ending
15,22
30,35
45,50
Run Code Online (Sandbox Code Playgroud)

您可以将其与您的sed命令一起使用,如下所示:

while read range
do 
    sed -n "${range}p" file
done < <(paste -d, starting ending)
Run Code Online (Sandbox Code Playgroud)

该构造<(...)称为进程替换。两者之间的空间<是必不可少的。