regex - 删除换行符后跟多个选项卡正则表达式

我尝试在 sed 中使用以下正则表达式删除换行符后跟带空格的制表符

sed "s|\n[\t|\s]*| |" input.log  > output.log

它不起作用,但如果我使用 per 那么它也会替换所有新行。我只想多次(超过 1 次)用空格替换换行符后跟制表符或空格。

perl -pe '/\n[\t|\s]*/ /' input.log  > output.log

以下链接中的示例数据:

https://regex101.com/r/D9sHjG/1

我想在换行后删除蓝色突出显示的选项卡。

最佳答案

第一个解决方案:sed 中,您可以尝试以下代码。使用 GNU sed-E 选项启用 ERE(扩展正则表达式)及其 -z 选项一次读取整个 Input_file。然后在主程序中使用seds选项进行替换;其中替换换行符后跟制表符/空格,并根据需要的输出仅用新行替换它。

sed -E -z 's~\n[[:blank:]]+~\n~g'  Input_file


第二个解决方案: 在 GNU awk 中将 RS 设置为 null 也有助于进行替换,如下所示:

awk -v RS= '{gsub(/\n[[:blank:]]+/,"\n")} {ORS=RT;print}' Input_file

https://stackoverflow.com/questions/74118904/

相关文章:

r - 选定列乘以给定向量

python - 如何避免 NumPy 中的嵌套 for 循环?

c# - .NET 6 将参数检查替换为 ArgumentNullException.ThrowIf

delphi - TFileStream 比 TMemoryStream 慢

javascript - 警告 IE11 用户他们的浏览器在 React 18 中不受支持

c# - ocelot api网关中的System.InvalidOperationExceptio

typescript - 如何为 Prisma 选择属性键入变量

python - 确定谁拥有超过 80% 的给定发货人

javascript - 在 Javascript 中没有双 for 循环的情况下用对象数组中的 0

awk - 使用 awk 将字段分隔符 ',' 更改为空格