Bash通过读取另一个文件中的行号从文本文件中获取行

时间:2015-08-06 10:14:42

标签: bash

我有一个以下类型的文件 lines.txt

1
3
5
6

我还有以下类型的另一个文件 text.txt

A
B
C
D
E
F
G
H

我想获得一个包含以下内容的输出文件:

A
C
E
F

是否有任何bash命令可以帮助我做到这一点?

3 个答案:

答案 0 :(得分:1)

您可以将text.txt的行数加cat -n。然后,您可以使用join根据数字对两个文件进行配对,-o2.2表示显示第二个文件中的第二列

cat -n text.txt | join -o2.2 lines.txt -

答案 1 :(得分:1)

<强>计划

  
      
  • 使用nl实用程序对行进行编号
  •   
  • 根据行号密钥
  • 使用join加入   

示例

join -o 1.2 <( nl -n ln text.txt ) lines.txt

<强>输出

A
C
E
F

答案 2 :(得分:1)

您可以循环显示lines.txt中的行号,然后使用sed所需的行:

for line in `cat lines.txt`
do
  sed -n "${line}p" text.txt
done