Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/bash/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/shell/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Bash 如何将以特定字结尾的行读入while循环_Bash_Shell_Sed_Awk_Grep - Fatal编程技术网

Bash 如何将以特定字结尾的行读入while循环

Bash 如何将以特定字结尾的行读入while循环,bash,shell,sed,awk,grep,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
somewords
some words
some words"/>
    <start some words
some words
some words
some words"/>

现在,我想将一条记录一条记录地读取到我的while循环中,为此,我尝试了如下方法

while IFS="/>" read line

code

done < file.txt
而IFS=“/>”读取行
代码
完成
但它只读取了记录的一部分

<start some words

我不知道你想用这些“记录”做什么,看来你还是想在阅读时使用
。因此,问题是如何将多行记录转换为单行记录。。我的理解是正确的,请检查此awk:

 awk '/<start/,/\/>/{printf "%s ",$0}/\/>/{print ""}' file
awk'/{printf“%s”,$0}/\/>/{print”“}文件
它将输出:

<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"/>


看起来像xml。使用XML解析器。不,它不是XML,它是单独的审核文件。请帮我解决这个问题。谢谢,你完全理解我的问题,请让我知道这个命令到底在做什么(一步一步)只有两个步骤,@vidyadhar对于每个
块,
printf
,打印块后,它将忽略
换行符,打印一个换行符。如果我理解正确,那么您将在开始和结束字符串之间获取数据,并在每个结束字符串之后打印一个新行。不是吗?
 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"/>