我尝试在 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。然后在主程序中使用sed
的s
选项进行替换;其中替换换行符后跟制表符/空格,并根据需要的输出仅用新行替换它。
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/
相关文章:
python - 如何避免 NumPy 中的嵌套 for 循环?
c# - .NET 6 将参数检查替换为 ArgumentNullException.ThrowIf
delphi - TFileStream 比 TMemoryStream 慢
javascript - 警告 IE11 用户他们的浏览器在 React 18 中不受支持
c# - ocelot api网关中的System.InvalidOperationExceptio
typescript - 如何为 Prisma 选择属性键入变量