我有一个大文件要解析和重新格式化,最好使用sed
(在 bash 下)。该文件包含以 开头PATTERN_START
和结尾的重复序列PATTERN_END
。这些序列与我必须保持不变的其他文本混合在一起。在序列中,有几条记录(编号从 1 到n,其中n可以是从 1 到 12)。记录是一组以 形式的行开头的行,其中i是 1 和n之间的整数,并以另一个这样的行 ( ) 或一行结束。记录的长度可以从 1 行到 30 行。Record i
Record (i+1)
PATTERN_END
这是输入文件的通用表示:
不相关的数据 (可能有很多行) ? PATTERN_START | 记录 1 ? | 记录 1 的数据 ? (最多 30 行) ?| | (多次重复) ? ? | (最多 12 条记录) | 记录 2 | | 记录 2 的数据 ?? | 模式_END? 不相关的数据 (可能有很多行)
因此,我希望,仅对于位于PATTERN_START
和之间的记录 …
我需要使用 Sed 实现一个 3 行滑动窗口,以便更改大文本文件中以下 3 个分组行的任何出现:
Fax: 05.11.22.33.44<LF>
<LF>
<LF>
Run Code Online (Sandbox Code Playgroud)
有了这个 :
Fax: 05.11.22.33.44<LF>
###
<LF>
Run Code Online (Sandbox Code Playgroud)
我尝试使用以下命令行(在 msdos 批处理文件中运行 sed,但在我的 linux bash 下它不起作用):
sed -i ":a;$!N;s/\nFax: \([ 0-9\.]*\n\n\);tenough;$!ba;:enough/\nFax: \1###\n/;$!ba;P;D" file.txt
Run Code Online (Sandbox Code Playgroud)
怎么了 ?
sed ×2