공간을 추가하고 휴식 시간 이후에 줄을 서도록 하세요.

공간을 추가하고 휴식 시간 이후에 줄을 서도록 하세요.

두 문자열 사이에 공백을 추가하고 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.

관련 정보