如何将以特定单词结尾的行读入while循环

时间:2013-07-31 12:34:40

标签: bash shell sed awk grep

我有一个文件,其中有一些记录,每条记录分为多行。

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

任何人都可以帮我解决数据记录问题吗?

1 个答案:

答案 0 :(得分: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,以区分哪个“记录”)