IP 주소와 날짜를 포함하여 다음 문자열이 있습니다. 보안상의 이유로 IP 주소의 처음 두 자리를 숨겨야 합니다.
text 200.200.10.2 2022.05.07 15:32:43 other texts
다음 명령을 실행했지만 2022.05.07
교체되었습니다.
echo "text 200.200.10.2 2022.05.07 15:32:43 other texts"|sed -e 's/[0-9]\{1,3\}\.[0-9]\{1,3\}\./IP./g'
text IP.10.2 2IP.07 15:32:43 other texts
나는 단지 변화하고 싶다 200.200.10.2
.
답변1
이 g
플래그는 "이 줄에 있는 문자열의 모든 항목을 대체합니다"를 의미합니다. 첫 번째 항목만 바꾸려면 다음을 제거하세요 g
.
$ echo "text 200.200.10.2 2022.05.07 15:32:43 other texts" |
sed 's/[0-9]\{1,3\}\.[0-9]\{1,3\}\./IP./'
text IP.10.2 2022.05.07 15:32:43 other texts
물론 세부 사항은 수행하려는 작업에 따라 다릅니다. 위의 명령도 999.999.whatever
로 대체되므로 IP.whatever
정확히 4개의 숫자 세트가 있는 경우에만 이 작업을 수행하고 싶을 수도 있습니다.
$ echo "1.2.3 text 200.200.10.2 2022.05.07 15:32:43 other texts" |
sed -E 's/([0-9]{1,3}\.){2}([0-9]{1,3}\.[0-9]{1,3})/IP.\2/'
1.2.3 text IP.10.2 2022.05.07 15:32:43 other texts
하지만 이것도 일치합니다 1.12.123.1234567890
. 따라서 공백이나 줄 끝이 뒤따르는 마지막 숫자 집합만 일치시키고 싶을 수도 있습니다.
$ echo "1.2.3 text 200.200.10.2 2022.05.07 15:32:43 other texts" |
sed -E 's/([0-9]{1,3}\.){2}([0-9]{1,3}\.[0-9]{1,3}([[:blank:]]|$))/IP./'
1.2.3 text IP. 2022.05.07 15:32:43 other texts