簡體   English   中英

使用 bash 讀取上一行

[英]read previous line using bash

使用 while 循環,我正在讀取一個文件,可以說:

string1
string2
string3
string4
string5
string6

發生的事情是因為我在 while 循環的第一次迭代中讀取了 string1 和 string2,第二次迭代從 string3 開始,第三次迭代從 string5 開始......等等

我已經嘗試尋找讀取可能具有的可能標志,但情況似乎並非如此。 我也試過 $Line1=$Line2 希望我可以指定我想讀哪一行

這是我的循環的樣子......

while read line1
do
  read line2
done

我在循環的第一次迭代中讀取了 string1 和 string2,在我的第二次迭代中我想讀取循環的 string2 和 string3,第三次迭代的循環 string3 和 string4 等等.....有沒有辦法指定哪個行我想讀? 有沒有辦法讀取上一行或“重置”我的讀取指針 go 向后?

您可以通過存儲上一行來做到這一點。

#!/bin/bash
prev=
while read line
do
    if [ ! -z "${prev}" ];then
        line1="${prev}"
        line2="${line}"
        echo "${line1}  ${line2}"
    fi
    prev="${line}"
done
string1  string2
string2  string3
string3  string4
string4  string5
string5  string6

您可以通過將所有文件存儲在數組中來嘗試此操作。

#!/bin/bash
b=(`cat filename`)
for i in $(eval echo {0..$[${#b[@]}-2]})
do
echo "${b[i]} ${b[i+1]}"
done

這里echo ${#b[@]}返回數組的長度。

暫無
暫無

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

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