簡體   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