我是使用 sed 的新手,但我一直在试验 sed s/..../..../
(替代)来修改一个完整的句子,如果它在一行上,但我不知道如何修改可能已在两行分隔的句子的替代解决方案,例如:
这个:
Lorem Ipsum is simply dummy text of the printing and typesetting industry.
Run Code Online (Sandbox Code Playgroud)
实际上是这样写的:
Lorem Ipsum is simply dummy text of the
printing and typesetting industry.
Run Code Online (Sandbox Code Playgroud)
即使它位于两行而不是一行,您如何检测或编码以替换整个句子?
Rad*_*anu 16
以下命令适用于两种情况:
sed '/Lorem.*/ {N; s/Lorem.*industry\./string to replace/g}' filename
Run Code Online (Sandbox Code Playgroud)
更多解释:如何使用 sed 替换多行字符串?
Gil*_*il' 12
虽然 sed 可以匹配多行模式(使用命令N
或H
在匹配前附加连续行),但这远远超出了它的舒适区。只有当你喜欢痛苦时才尝试它。
Perl 可以很好地完成这类事情。使用-p
开关使其一次处理标准输入一条记录并打印修改后的记录(à la sed),并-000
打开段落模式(记录以空行分隔)。在正则表达式中,\s
匹配包括换行符在内的任何空白字符。
perl -p -000 -e 's/Lorem\s+Ipsum\s+is\s+simply\s+dummy\s+text\s+of\s+the\s+printing\s+and\s+typesetting\s+industry\./Replacement text/g'
Run Code Online (Sandbox Code Playgroud)
如果您想在原始文本包含换行符时在替换文本中放置一个换行符,那就更复杂了。如何做到这一点取决于您对在哪里放置换行符的要求。
归档时间: |
|
查看次数: |
51900 次 |
最近记录: |