[해결] vim, sed, wc에 대해서 질문 드립니다. (감사합니다.)

sephi의 이미지

vim, sed, wc에 대해 도움말을 봐도 찾지 못하고 있는
몇 가지 내용을 질문 드리고자 합니다.

1. vim 질문
의미없는 글자 혹은 규칙이 없는 글자에서
정확히 3번째에 콤마를 찍고 싶습니다.

asdfasdfasdf
aaxfzcvzxcv
axdfqewrdf

===>
asd,fasdfasdf
aax,fzcvzxcv
axd,fqewrdf

vim에서 이런 식으로 수정할 수 있을까요?

2. sed 질문

== aa.log ==
20100126[asdfasdfadfasdf]
20100126[zxcvzxcvzxbzfgsdgsd]
20100127[zvxcvzxbfgsdgsd]
20100127[asdfasdffasdf]

> cat aa.log | sed -e "s/\[.*$//g"
20100126
20100126
20100127
20100127

현재는 이런 식으로 값을 구하고 있습니다
[를 찾아서 그 다음을 삭제하는 거죠.
그런데 각줄에 데이터가 일정한 값이 없을 때, 값을 찾기가 어렵습니다.

예를들어,

20100126asdfasdfadfasdf
20100126zxcvzxcvzxbzfgsdgsd
20100127zvxcvzxbfgsdgsd
20100127asdfasdffasdf

값이 있을때, 같은 결과를 가져 오려면, 어떻게 해야 하는지요?
^.\[8\] 로 선택한 결과만 가져오려 할 때,
다시 말하면 선택한 부분만 빼고 나머지 부분을 삭제하려 할 땐
어떻게 해야 하는지요?

3. wc 질문

== aa.log ==
20100126[asdfasdfadfasdf]
20100126[zxcvzxcvzxbzfgsdgsd]
20100126[zvxcvzxbfgsdgsd]
20100126[asdfasdffasdf]
20100127[zvxcvzxbfgsdgsd]
20100127[asdfasdffasdf]

> cat aa.log | grep 20100126 | wc - l
4

로 나옵니다. 이런걸 shell로 작성하지 않고 간단하게

20100126 4
20100127 2

이런 식에 결과를 가져올 방법이 있을까요?

답변해주시면 감사하겠습니다. >.<

neocoin의 이미지

1.

:help pattern
:%s/^\(...\)/\1,

4. wc는 답이 없고, 그냥 당장 생각나는건 다음꺼.. 하하 그런데 결과가 거꾸로네요.

cat a.txt | awk 'BEGIN {FS="["}; {print $1}' | uniq -c

   4 20100126
   2 20100127

sephi의 이미지

그런데, 제가 이해가 안가는 부분이
뒤에 \1에 의미가 잘 이해가 안가는데요.
간략하게 알려 주시면 안될까요? .. >.<

neocoin의 이미지

답변달면 edit 안되는군요. 원하시는게 awk가 아니라서 그냥 고치고 있었는데.. 뭐 패스하죠. 패턴 문서 좀더 보시면됩니다. 제가 sed를 자주 안써서 ..

\1 는 group matching 입니다.

:help /\(
:help \1

4번 다시..

cat a.txt | sed -e "s/^\(.\{8\}\).*/\1/g" | uniq -c
sephi의 이미지

감사합니다. 복 받으실꺼에요.
저장해 놓구 bible로 삼겠습니다.>.<

neocoin의 이미지

여기 초고수님들 앞에 지렁이라서.. 아마 1년 후에 보시면서 하하하 하실꺼에요 ;;

lacovnk의 이미지

게시판 이동했습니다