添加空间并确保它们在中断后对齐

添加空间并确保它们在中断后对齐

我试图在两个字符串之间添加空格,并确保它们在每次使用 sed 尝试中断后都对齐,但似乎在冒号后面添加空格,但这并没有成功,因为冒号之前的文本长度各不相同

前任:

Name of user: test1

    username:test1
    User ID:1004 
    Group ID:1004 

我想要的是

Name of user: test1

        username:     test1
        User ID:      1004 
        Group ID:     1004 

代码:

#!/bin/bash
echo -n "Name of user: test1" 
echo 
echo -n "username" 
getent passwd test1 | cut -d ':' -f 1
echo -n "username" 
getent passwd test1 | cut -d ':' -f 2
echo -n "username" 
getent passwd test1 | cut -d ':' -f 3

答案1

如果这是由您可以更改的脚本生成的输出,则只需:在打印该行时在字符后面输出一个制表符。


使用GNU sed(它理解\t):

$ sed 's/: */:\t/' file
Name of user:   test1

    username:   test1
    User ID:    1004
    Group ID:   1004

这只是将:字符及其后面的任何空格替换为:后跟制表符。

对于非 GNU sed(例如,在 BSD 系统上),请使用文本制表符而不是\t.您可以在命令行上使用 插入文字制表符Ctrl+VTab

相关内容