Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/linux/25.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
Regex Cygwin Sed-一个表达式在开头匹配字符串,在结尾不匹配_Regex_Linux_Bash_Sed_Cygwin - Fatal编程技术网

Regex Cygwin Sed-一个表达式在开头匹配字符串,在结尾不匹配

Regex Cygwin Sed-一个表达式在开头匹配字符串,在结尾不匹配,regex,linux,bash,sed,cygwin,Regex,Linux,Bash,Sed,Cygwin,我一直在试图找到一个与cygwin的sed兼容的sed脚本,它将与 ^和无$ 我需要一个表达。当行匹配时,我需要删除行尾或将下一行附加到当前行的末尾 问题是我们有被转储的xml,当两行长时,它会将其拆分为两行。要使用sed: sed '/^<Transaction>/{/<\/Transaction>$/!{N;s/\n/ /}}' sed'/^/{/$/!{N;s/\N/}' 其工作原理如下。对于以开头但不以结尾的行,请追加下一行,并用空格替换换行符。所有其他行保持

我一直在试图找到一个与cygwin的sed兼容的sed脚本,它将与

^
和无
$

我需要一个表达。当行匹配时,我需要删除行尾或将下一行附加到当前行的末尾

问题是我们有被转储的xml,当两行长时,它会将其拆分为两行。

要使用sed:

sed '/^<Transaction>/{/<\/Transaction>$/!{N;s/\n/ /}}'
sed'/^/{/$/!{N;s/\N/}'
其工作原理如下。对于以
开头但不以
结尾的行,请追加下一行,并用空格替换换行符。所有其他行保持不变

如果添加的空间不需要,只需将
/
更改为
/
。如果原始文件的任何一行被分成三行,请运行该命令两次。

perl -pe 'chomp if /^<Transaction>/ and not /<\/Transaction>$/' file
perl-pe'chomp if/^/和not/$/'文件

Darn,它删除了我在前面加引号的内容,但不是在后面。如果你是说
regex
,没有一行只有
^
但没有
$
…文件不太可能包含文字
^
$
--您确定吗?我想匹配以开头但结尾没有的行。我添加了“^”和“$”以显示行的开始和结束。我不是在解析XML,如果我想在标记之间找到值,我将解析XML"........... 我不是我在做一行一行的替换,sed的用途是。。。。。。。。。。在你滔滔不绝地提出愚蠢的建议之前先阅读。这很有效,但有一个问题,那就是匹配不以事务开头和结尾的行,例如:@user3211352 fixedthat@user3211352它在我们的环境中适用于此测试文件吗?适用于复制并粘贴的测试文件,不是我的文件。@user3211352如果您上传一个示例文件并在这里提供一个链接,它可能有助于解决问题。其中一个可能的原因是,元素周围有尾随空格,因此这些
^…
..$
regexp与它们不匹配。我不明白为什么这不起作用。这对我不起作用。
sed ':0 /<\/Transaction>$/!N;s/\(^<Transaction>.*\)\n/\1/;t0'
<NotATransaction>a</NotATransaction>
<NotATransaction>b1
b2</NotATransaction>
<Transaction>A</Transaction>
<Transaction>B1
B2
B3
B4
B5</Transaction>
<Transaction>C1
C2</Transaction>
<Transaction>D</Transaction>