Sed 从文件中删除文本

Sed 从文件中删除文本,sed,Sed,我在从文件中删除一系列文本时遇到问题。请参见下面的文件示例: <transaction> some text some text some text </transaction> <transaction> some text some text some text </transaction> <transaction> some text some text some text </transaction> 一些文本

我在从文件中删除一系列文本时遇到问题。请参见下面的文件示例:

<transaction>
some text
some text
some text
</transaction>
<transaction>
some text
some text
some text
</transaction>
<transaction>
some text
some text
some text
</transaction>

一些文本
一些文本
一些文本
一些文本
一些文本
一些文本
一些文本
一些文本
一些文本
我只想删除以第一个
开头,以结尾的内容 第一个:
。删除内容应包括


我认为这可以通过使用
sed
实现。但是我一直无法使其工作。

如果您的输入与示例中的输入类似,那么使用awk可以更轻松地完成此操作:

awk '{ if (p) print $0 }; $0=="</transaction>" { p = 1 }' input.txt
awk'{if(p)print$0}$0==“p=1}”input.txt
编辑:

如果需要将第四行(例如第四行)跳过到下一行:

awk 'BEGIN { p = 0 }; $0=="<transaction>" { p++ }; { if (p != 4) print $0 }' input.txt
awk'开始{p=0}$0==”{p++};{如果(p!=4)打印$0}'input.txt

如果您只想删除带有标记的行,请使用:

sed -e '/<\/\?transaction>/d' file.txt
sed-e'//d'file.txt
如果要删除标记及其之间的文本,请使用:

sed -e '/<transaction>/,/<\/transaction>/d' file.txt
sed-e'//,//d'file.txt
这可能适合您(GNU-sed):

awk'/transaction/{b++}b>2'
输出:

<transaction>
some text
some text
some text
</transaction>
<transaction>
some text
some text
some text
</transaction>

一些文本
一些文本
一些文本
一些文本
一些文本
一些文本

我对awk不是很熟悉,但是您能修改命令以删除第n个事务条目吗?不要只是说您无法让它工作,请包含您的代码(在上面的Q中),然后人们可以帮助您了解sed的工作方式。我们想教你如何钓鱼,而不是为你抓鱼;-)。祝你好运
sed '1,/<\/transaction>/{/<transaction>/h;G;//!P;d}' file
<transaction>
some text
some text
some text
</transaction>
<transaction>
some text
some text
some text
</transaction>