글의 한 라인에
? (10.10.20.5) at 00:00:00:00:00:00:00 on eth0
이라고 되어 있는데, 이중에서 10.10.20.5만 떼어내고 싶습니다.
sed명령 옵션을 어떻게 줘야 할까요?
이거 참 어렵네요.. 으...
부탁합니다.
sed는 잘 모르지만요. 대충
sed -e 's/.*\([(][0-9]*\.[0-9]*\.[0-9]*\.[0-9]*[)]\).*$/\1/' | sed -e 's/[()]//g'
이러면 될것 같습니다.
awk -F "(" '{print $2}' | awk -F ")" '{print $1}' 이면 (와 ) 사이에 있는 게 나올 겁니다.
좀더 간단 버전으로...
sed -e 's/[^(]*(\([^)]*\)).*$/\1/'
대개 " " 매칭을 할 때, " 안의 것을 [^"] 형태가 반복된 후 " 가 나오는 것으로 하지요...
그걸 응용해서 처음 부분을 ( 가 아닌 것이 반복되고 ( 가 나오고 )가 아닌 것이 반복되고 ) 가 나오며 맨뒤는 쓰레기 처리..형태로 구성하였구요..
그 중간에 \(, \) 을 두어 sub expression임을 명시하였습니다.
---http://coolengineer.com
텍스트 포맷에 대한 자세한 정보
<code>
<blockcode>
<apache>
<applescript>
<autoconf>
<awk>
<bash>
<c>
<cpp>
<css>
<diff>
<drupal5>
<drupal6>
<gdb>
<html>
<html5>
<java>
<javascript>
<ldif>
<lua>
<make>
<mysql>
<perl>
<perl6>
<php>
<pgsql>
<proftpd>
<python>
<reg>
<spec>
<ruby>
<foo>
[foo]
sed는 잘 모르지만요. 대충[code:1]sed -e 's/.*
sed는 잘 모르지만요. 대충
sed -e 's/.*\([(][0-9]*\.[0-9]*\.[0-9]*\.[0-9]*[)]\).*$/\1/' | sed -e 's/[()]//g'
이러면 될것 같습니다.
그런 건 awk죠.
awk -F "(" '{print $2}' | awk -F ")" '{print $1}'
이면 (와 ) 사이에 있는 게 나올 겁니다.
좀더 간단 버전으로...sed -e 's/[^(]*(\([^)]*
좀더 간단 버전으로...
sed -e 's/[^(]*(\([^)]*\)).*$/\1/'
대개 " " 매칭을 할 때, " 안의 것을 [^"] 형태가 반복된 후 " 가 나오는 것으로 하지요...
그걸 응용해서
처음 부분을 ( 가 아닌 것이 반복되고
( 가 나오고
)가 아닌 것이 반복되고
) 가 나오며
맨뒤는 쓰레기 처리..형태로 구성하였구요..
그 중간에 \(, \) 을 두어 sub expression임을 명시하였습니다.
---
http://coolengineer.com
댓글 달기