如何用sed替换多行字符串的一部分
我想用如何用sed替换多行字符串的一部分,sed,Sed,我想用替换字符串中的换行符,该换行符位于三个反勾号语句(```中)之外的所有位置 字符串: This is some requirements just talking about c++ with `char` types supported by C++: ``` using SecureString = BasicSecureString<char>; using WSecureString = BasicSecureString<wchar_t>; using U
替换字符串中的换行符,该换行符位于三个反勾号语句(```中)之外的所有位置
字符串:
This is some requirements just talking about c++ with
`char` types supported by C++:
```
using SecureString = BasicSecureString<char>;
using WSecureString = BasicSecureString<wchar_t>;
using U16SecureString = BasicSecureString<char16_t>;
using U32SecureString = BasicSecureString<char32_t>;
```
And continuing to write
stuff
<代码>这是C++的一些要求。
`C++支持的char`类型:
```
使用SecureString=basicsecuretring;
使用wsecuretring=基本安全性;
使用U16SecureString=基本安全性;
使用U32SecureString=BasicSecureString;
```
继续写作
东西
预期结果:
This is some requirements just talking about c++ with<br/>`char` types supported by C++:<br/>```
using SecureString = BasicSecureString<char>;
using WSecureString = BasicSecureString<wchar_t>;
using U16SecureString = BasicSecureString<char16_t>;
using U32SecureString = BasicSecureString<char32_t>;
```<br/>And continuing to write<br/>stuff
<代码>这是C++所讨论的一些与C++支持的char类型有关的要求:
使用SecureString=basicsecuretring; 使用wsecuretring=基本安全性; 使用U16SecureString=基本安全性; 使用U32SecureString=BasicSecureString; ```
并继续写
东西 我目前拥有的是:
sed --null-data '/```.*```/!s/\n/<br\/>/g'
sed--null数据'/`.*``/!s/\n//g'
但它只处理不包括回跳的输入
有人有什么提示吗?使用
perl
或awk
perl-0777-pe的#``.*`(*SKIP)(*F)|\n#
#sg'
awk'/`/{f=!f}{ORS=f?RS:“
”}1”
perl
解决方案与您使用sed
尝试的解决方案类似
将拖拽整个输入文件,类似于-0777
,但sed-z
使用ASCII NUL作为行分隔符-z
以防止更改此匹配部分``.*?``(*SKIP)(*F)
指定了应匹配的内容|\n
替换字符串
标志,允许s
也匹配换行符
awk
,输出记录分隔符将根据f
的值进行更改,只要输入有三个反勾号,该值就会更改。这种方法的优点是不必对整个输入进行重复
如果不希望更改文件中的最后一个换行符,请使用
perl-0777-pe的#``.*`(*SKIP)(*F)|\n(?!\z)#
#sg'
使用perl
或awk
perl-0777-pe的#``.*`(*SKIP)(*F)|\n#
#sg'
awk'/`/{f=!f}{ORS=f?RS:“
”}1”
perl
解决方案与您使用sed
尝试的解决方案类似
-0777
将拖拽整个输入文件,类似于sed-z
,但-z
使用ASCII NUL作为行分隔符
``.*?``(*SKIP)(*F)
以防止更改此匹配部分
|\n
指定了应匹配的内容
替换字符串
s
标志,允许
也匹配换行符
使用awk
,输出记录分隔符将根据f
的值进行更改,只要输入有三个反勾号,该值就会更改。这种方法的优点是不必对整个输入进行重复
如果不希望更改文件中的最后一个换行符,请使用
perl-0777-pe的#``.*`(*SKIP)(*F)|\n(?!\z)#
#sg'
使用-z
时,只有一行<代码>/regexp/代码>适用于整行,而不是行的一部分是的,我也是这么想的。当你使用-z
时,你只有一行<代码>/regexp/代码>适用于整条线路,而不是线路的一部分是的,我也是这么想的。