다음 문자열을 바꾸는 방법
hd_ma_prod_customer_ro:*:123456789:john.doe
john.doe와 함께
기본적으로 마지막 콜론 (:)을 찾아서 포함하기 전에 모든 것을 삭제해야합니다.
답변
실제로 의미하는 것은 마지막 콜론까지 모든 것을 삭제하고 john.doe
그대로 남겨두고 싶다는 가정입니다 .
echo 'hd_ma_prod_customer_ro:*:123456789:john.doe' |
sed 's/.*://'
설명:
첫 번째 줄은 테스트 문자열을 sed
예를 들어 파이프 합니다.
두 번째는 기본 sed
대체 입니다. 첫 번째와 두 번째 사이의 부분은 /
검색 할 정규식 이고 두 번째와 세 번째 사이의 부분은 그것을 대체 할 것입니다 (이 경우에는 삭제하지 않습니다).
정규식의 경우 .
모든 문자와 일치 *
하고이 숫자를 0 회를 포함하여 여러 번 반복 :
하며 콜론 과 일치합니다. 따라서 효과적으로 콜론이 뒤 따릅니다. .*
콜론을 포함 할 수 있으므로 일치 항목은 ‘욕심’이며 마지막 콜론까지의 모든 항목이 포함됩니다.
답변
sed -r 's/:/\t/g' filename | awk -F'\t' '{print $4}'
나는 모든 발생을 교체하고 있습니다 : 로 탭을 사용하여 다음과 awk
문자열 즉 John.Doe을 추출 할 수 있습니다.
파일이 없으면 시도해보십시오.
echo 'hd_ma_prod_customer_ro:*:123456789:john.doe' | sed -r 's/:/\t/g' |
awk -F'\t' '{print $4}'
Graeme의 설명 에 따라 아래 awk
의 NF
변수를 사용하여 마지막 열만 인쇄하는 데 사용할 수 있습니다 awk
.
echo 'hd_ma_prod_customer_ro:*:123456789:john.doe' | sed -r 's/:/\t/g' | awk -F'\t' '{print $NF}'
불필요한 설명을 없애기 위해 Graeme의 의견 통합 sed
다음과 같이 명령을 수정할 수 있습니다.
echo 'hd_ma_prod_customer_ro:*:123456789:john.doe' | awk -F':' '{print $NF}'
답변
다음을 사용하는 다른 방법 awk
:
awk -F: '{ print $NF }'
답변
시도하십시오
편집 : 앵커 제거
echo 'abc:fjk' |sed 's/.*:/john.doe/g'
삭제
echo 'abc:fjk' |sed 's/.*://g'