我试图在两个字符串之间添加空格,并确保它们在每次使用 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。