繁体   English   中英

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

[英]Bash get lines from text file by reading line numbers from another file

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

1
3
5
6

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

A
B
C
D
E
F
G
H

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

A
C
E
F

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

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

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

计划

  • 使用nl实用程序对行进行编号
  • 使用联接根据行号键联接

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

输出

A
C
E
F

您可以遍历lines.txt的行号,然后使用sed所需的行:

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM