【发布时间】:2018-11-16 16:32:49
【问题描述】:
我正在尝试使用 sed 解析以下行,以便仅当空格不在冒号之前时用换行符替换空格。
例如,我正在使用以下输入进行处理:
label1: output label2: output2 label3: "output3" label4: output4 { label5: output5 label6: output6 } label7: output7 { { { label8: output8 } label9: output9 } } label10: output10
我希望正则表达式用换行符替换前面没有冒号的任何空格,因此输出将是这样的:
label1: output
label2: output2
label3: "output3"
label4: output4
{
label5: output5
label6: output6
}
label7: output7
{
{
{
label8: output8
label9: output9
}
}
label10: output10
当我尝试在cat file | sed 's/[^:A-Za-z0-9\"] /%/g' | tr '%' '\n' 中使用以下正则表达式时,它会产生以下输出,这很接近但没有达到目标:
label1: output label2: output2 label3: "output3" label4: output4
label5: output5 label6: output6
label7: output7
label8: output8
label9: output9
label10: output10
我也试过这个cat file | sed 's/[^:A-Za-z0-9\"] /%/g' | tr '%' '\n',结果是
label1: outpu
label2: output
label3: "output3
label4: output
label5: output
label6: output
label7: output
label8: output
label9: output
label10: output10
看起来像正则表达式还包括用换行符替换不是: 的所有其他字符。
【问题讨论】:
-
“不是冒号(或换行)”的正则表达式是
[^:];从您的问题中不清楚您是否还希望替换后跟空格的换行符。