如何使用 sed 或 perl 一行仅将文件中的一行与左侧对齐

如何使用 sed 或 perl 一行仅将文件中的一行与左侧对齐

这将删除每行开头的所有空格和制表符:

sed 's/^[ \t]*//' file

但假设我们只想对齐queued.max.requests=1000文件中的参数

  • 输入示例:
        log.flush.interval.messages=20000
        queued.max.requests = 1000
        producer.purgatory.purge.interval.requests=100
    
  • 期望的输出:
         log.flush.interval.messages=20000
    queued.max.requests=1000
         producer.purgatory.purge.interval.requests=100
    

我们如何适合sed 's/^[ \t]*//'这种情况?另外,我希望 sed/perl 删除参数到“ =”以及从“ =”到过程中的值之间的空格。

答案1

怎么样

sed '/queued\.max\.requests/s/[\t ]\{1,\}//g' file

或者

sed -r '/queued\.max\.requests/s/[\t ]+//g' file

=这将仅删除包含 的行中的所有空格(从行的开头以及 周围的空格) queued.max.requests

答案2

$ sed 's/^[[:space:]]*\(queued\.max\.requests\)/\1/; s/ *= */=/' file
    log.flush.interval.messages=20000
queued.max.requests=1000
    producer.purgatory.purge.interval.requests=100

相关内容