Whileループ - 一度に2行を読み込みます。

Whileループ - 一度に2行を読み込みます。

ログファイルのデータを解析しようとしています。

以下はデータファイルです。

Data1
Data2
Data3
Data4

私のコードは次のとおりです。

data=$(cat datafile)
echo "$data" | while read line; read line1;
do
    echo "$line and $line1"
done

私が望む出力は次のとおりです。

Data1 and Data2
Data2 and Data3
Data3 and Data4

しかし、私が得るものは次のとおりです。

Data1 and Data2
Data3 and Data4

私はなぜこのように振る舞うのか理解していますが、私が望む方法で何をすべきかわかりません。あなたはコツを知っている人ですか?

ありがとう

ベストアンサー1

while readテキストを処理するためにシェルループを使用しないでください。ここで最も簡単なのは次のとおりですawk

awk 'NR > 1 {print prev, "and", $0}; {prev = $0}' < datafile

または以下を使用してsed

sed 'x; 1d; G; s/\n/ and /' < datafile

おすすめ記事