Bash 如何将以特定字结尾的行读入while循环
我有一个文件,其中有一些记录,每条记录被分割成多行 file.txtBash 如何将以特定字结尾的行读入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 <
<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"/>