簡體   English   中英

使用 bash 中的另一個文件替換 txt 文件中的多行

[英]replace multiple lines in a txt file using another file in bash

我有兩個包含相同行數的文件“file1.txt”和“file2.txt”。 我想用 file1.txt 的奇數行替換 file2.txt 的奇數行。

例子:

文件1.txt

header1.1
content1.1
header1.2
content1.2
header1.3
content1.3

文件2.txt:

content2.1
header2.2
content2.2
header2.3
content2.3

我想要的結果:

文件2.txt:

header1.1
content2.1
header1.2
content2.2
header1.3
content2.3

先感謝您

這將做到這一點,假設header2.1應該是file2.txt的第一行。

I=1
paste -d '\n' file1.txt file2.txt | while read line ; do 
  if [ `expr \( $I + 3 \) % 4` -eq 0 ] ; then echo "$line" ; fi 
  if [ `expr  $I % 4` -eq 0 ] ; then echo $line ; fi 
  I=`expr $I + 1`
done

我正在使用paste -d '\n' file1.txt file2.txt將 2 個文件組合成一個 stream 交替行,然后我需要提取正確的行號。 如果您注意到粘貼的結果類似於:

[row 1] header1.1
[row 2] header2.1
[row 3] content1.1
[row 4] content2.1
[row 5] header1.2
[row 6] header2.2
[row 7] content1.2
[row 8] content2.2
....

看來您想要 file1.txt 的奇數行和 file2.txt 的偶數行。 在組合示例中,您需要每組 4 行的第 1 行和第 4 行。

這需要行號,添加 3 並使用 % (模數)運算符檢查它是否可以被 4 整除且沒有余數。 這將匹配第 1 行、第 5 行、第 9 行等。

expr \( $I + 3 \) % 4

這將檢查行號是否可以被 4 整除

expr  $I % 4

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM