awk / sed + 두 번째 문자 만 공백으로 바꿉니다.


2

두 번째 "."만 제거하는 방법에 대한 조언을 구하십시오. awk가있는 버전 번호의 문자

Linux & Solaris의 구문에 맞아야합니다

나는 쓴다

  sed "s'/\./ /g'" - 

그러나이 구문은 모든 "."를 제거합니다. 버전 번호에서

예를 들어 (이전 버전 번호)

 34.34.55.4

sed 조작 후

 34.34 55.4

대신 awk를 고려 했습니까? SED로 이것을하는 것은 모든 종류의 상태를 처리하는 능력이 매우 제한되어 있기 때문에 고통 스럽습니다.
Zoredache

1
@Zoredache 나는 보통 awk도 추천하지만 sed에서는 그다지 고통스럽지 않습니다.)
SiegeX

확인을 나는 질문 업데이트
Eytan

답변:


3
echo -e '1.2.3.4\n2.3.4\n5.6.7.8' | sed 's/\([^.]*\.[^.]*\)\./\1 /'

중괄호 안의 부분은 "점없는 점, 점,없는 점"과 일치합니다. 대체 텍스트에서 \ 1은이 하위 일치를 나타냅니다.

그러나 주어진 다른 솔루션은 틀림없이 훨씬 우아합니다.


2
$ sed 's/\./ /2' <<<'34.34.55.4'
34.34 55.4

이 문법은 solaris에서 작동하지 않습니다
Eytan

@Eytan <<<'34.34.55.4'부분은 입력의 예일뿐입니다. 파일 이름으로 바꾸거나 echo로 파일을 파이프하면됩니다. sed 명령은 확실히 작동합니다.
SiegeX

2

사용 GNU Awk:

명령:

awk '$0 = gensub( /\./, " ", 2 )' <<<"34.34.55.4"

산출:

34.34 55.4
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.