我是Sed的新手.我有一堆包含数据的ASCII文件,如下所示:
Test_Version:2.6.3
Model-Manufacturer:
HR21-100
Test_Version:2.6.3
Model-Manufacturer:
D12-100
Run Code Online (Sandbox Code Playgroud)
我想要做的就是为"模型制造商:"折叠线条,如下所示:
Test_Version:2.6.3
Model-Manufacturer:HR21-100
Test_Version:2.6.3
Model-Manufacturer:D12-100
Run Code Online (Sandbox Code Playgroud)
我尝试使用sed,因为我发现在"Model-Manufacturer:"之后有2个十六进制值(\n为0x)
cat myfile| sed -n "/[[:xdigit:]]\{2\}/p"
Run Code Online (Sandbox Code Playgroud)
对于我的匹配代码,输出看起来像这样:
Model-Manufacturer:
HR21-100
Model-Manufacturer:
D12-100
Run Code Online (Sandbox Code Playgroud)
这告诉我,我走在正确的轨道上,对吗?我无法弄清楚的是为"模型制造商:"折叠线的正确匹配/替换代码.一次尝试
cat myfile| sed "s/[[:xdigit:]]\{3\}//g"
Run Code Online (Sandbox Code Playgroud)
完成搞砸了我的档案.知道怎么做吗?
$ cat test.txt
Test_Version:2.6.3
Model-Manufacturer:
HR21-100
Test_Version:2.6.3
Model-Manufacturer:
D12-100
$ cat test.txt | sed -e '/:$/N; s/:\n/:/'
Test_Version:2.6.3
Model-Manufacturer:HR21-100
Test_Version:2.6.3
Model-Manufacturer:D12-100
Run Code Online (Sandbox Code Playgroud)
这是每个sed命令的细分.
/:$/N
Run Code Online (Sandbox Code Playgroud)
如果输入行末尾有一个':',则在模式空间的末尾插入换行符并附加下一行输入.
s/:\n/:/
Run Code Online (Sandbox Code Playgroud)
将":"替换为带有":"的换行符,删除换行符.