使用 sed 或 awk 用空格填充正则表达式

sud*_*nih 0 awk sed padding

我有一个文件,其中两个字段用 分隔:,两个字段的长度都不同,第二个字段可以包含各种字符(用户输入)。我希望第一个字段正确填充空格到 15 个字符的固定长度,对于第一个字段,我有一个有效的 regex @.[A-Z0-9]{4,12}

样本:

@ABC123:"wild things here"
@7X3Z:"":":@":";:*:-user input:""
@99999X999:"also, imagine: unicode, yay!"
Run Code Online (Sandbox Code Playgroud)

所需的输出:

@ABC123        :"wild things here"
@7X3Z          :"":":@":";:*:-user input:""
@99999X999     :"also, imagine: unicode, yay!"
Run Code Online (Sandbox Code Playgroud)

有很多示例如何对数字进行零填充,但令人惊讶的是,关于常规填充正则表达式或字段的示例并不多,使用(最好)sed 或 awk 有什么帮助吗?

anu*_*ava 5

这是另一个awk适用于任何版本的 awk 的解决方案:

awk 'BEGIN {FS=OFS=":"} {$1 = sprintf("%-15s", $1)} 1' file

@ABC123        :"wild things here"
@7X3Z          :"":":@":";:*:-user input:""
@99999X999     :"also, imagine: unicode, yay!"
Run Code Online (Sandbox Code Playgroud)