jk *_*ica 5 sed perl text-processing
我有一个简单的 xml 文件,其中包含一些分页符上的连字符。输入是这样的
ba bla bla hyphe-</page>
<page>nated bla bla bla
Run Code Online (Sandbox Code Playgroud)
输出应该是这样的
bla bla bla</page>
<page>hyphenated bla bla bla
Run Code Online (Sandbox Code Playgroud)
我知道 sed 命令N
,但我无法控制我的断字是出现在奇数行还是偶数行。
我可以使用 sed 执行上述 skteched 的连字符删除吗?是否有替代方法(例如使用其他 UNIX shell 命令或使用 python 或 perl)?
编辑。根据要求,我的输入文件中的一个真实示例:
[...] and vapours, upon the comparison of the air-thermo-</page>
<page>meter with the mercurial thermometer, upon the elastic [...]
Run Code Online (Sandbox Code Playgroud)
EDIT2:Alltho' 我相当随机地拿起了这个例子,它确实是一个非常讨厌的例子。在这种情况下想要的输出是
[...] and vapours, upon the comparison of the</page>
<page>air-thermometer with the mercurial thermometer, upon the elastic [...]
Run Code Online (Sandbox Code Playgroud)
即使用空格作为单词分隔符。我的主要问题是编写一个跨越原始换行符的模式。是的,该模式应该只删除前面的连字符</page>
某种怪物)使用perl应该更容易
cat file
ba bla bla hyphe-</page>
<page>nated bla bla bla
and the output should look like
bla bla bla</page>
<page>hyphenated bla bla bla
Run Code Online (Sandbox Code Playgroud)
它是 GNU sed (在其他一些 sed -s -E 选项中用于扩展正则表达式)
sed -nr '/[[:alpha:]]+-<\/[[:alpha:]]+>$/{
N
s!([[:alpha:]]+)-(</[[:alpha:]]+>)\n(<[[:alpha:]]+>)([[:alpha:]]+)!\2\n\3\1\4!}
p' file
ba bla bla </page>
<page>hyphenated bla bla bla
and the output should look like
bla bla bla</page>
<page>hyphenated bla bla bla
Run Code Online (Sandbox Code Playgroud)