sed 명령을 사용하여 특정 줄의 첫 문자만 대문자로 변환

sed 명령을 사용하여 특정 줄의 첫 문자만 대문자로 변환

다음 줄에 있는 각 단어의 첫 문자를 어떻게 대문자로 변환합니까 gr-description: ?

예를 들어:

$ cat /tmp/test1
groMail:
[email protected]
gr-description:
abc-location-999
group-emailid:
[email protected]
members:
[email protected]
[email protected]
[email protected]

출력은

groMail:
[email protected]
gr-description:
Abc-Location-999
group-emailid:
[email protected]
members:
[email protected]
[email protected]
[email protected]

다음 명령을 시도했지만 병합할 수 없습니다

sed -n '/gr-description:/{n;p;}' grp1 | sed 's/\<./\u&/g'

답변1

sed확장 기능이 있는 GNU 또는 다른 것을 사용하는 것 같으 \u므로 다음을 수행할 수 있습니다.

sed -e '/gr-description/{n;s/\b./\u&/g;}' < test1

이는 다음을 포함하는 행과 일치한 gr-description다음 실행됩니다.{}그 순간.n다음 줄로 이동하여 방금 일치한 줄을 인쇄한 다음s이 명령은 단어 경계(\b또는\<) 및 대문자 버전(\u&).

이 모든 작업은 한 파이프를 sed다른 파이프에 연결하지 않고 한 번에 수행됩니다. 이는 원하는 작업을 수행하지 않습니다. 진행하면서 스트림을 편집하는 대신 라인을 출력하기만 하면 됩니다.

관련 정보