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