1

いくつかのレコードがあり、各レコードが複数行に分割されているファイルがあります。

file.txt

    <start some words
somewords
some words
some words"/>
    <start some words
some words
some words
some words"/>

今、レコードごとにwhileループに読み込みたいので、以下のようなことを試しました

while IFS="/>" read line

code

done < file.txt

しかし、それはレコードの一部のみを読み取っています。

<start some words

しかし、レコードを行変数に読み込みたい

     <start some words
somewords
some words
some words"/>

以下のようなことも試しましたが、うまくいきませんでした

sed -n '/<start/\/>/'p | while read line

code

done < file.txt

データレコードを賢く読む方法を教えてくれる人はいますか?

4

1 に答える 1

2

それらの「レコード」で何をしたいのかわかりませんが、while read...とにかく使いたいようです。問題は、複数行のレコードを単一行に変換する方法です。私の理解は正しかったので、この awk を確認してください。

 awk '/<start/,/\/>/{printf "%s ",$0}/\/>/{print ""}' file

次のように出力されます。

<start some words somewords some words some words"/> 
<start some words2 some words2 some words2 some words2"/> 
<start some words3 some words3 some words3 some words3"/>

code行/レコードにロジックを適用できるようにします。

(2 と 3 は、どの「レコード」かを区別するために、私が追加したものです)

于 2013-07-31T12:44:17.473 に答える