shell script를 통해서 tcpdump 출력을 변경하고 싶습니다.
아래와 같은 출력해서 특정 라인만 뽑아서 출력하지 않고,
전체를 출력하는 동시에
0x0000: 38ea a717 df3c 14fe b5da e10e 0800 4500
에서 :는 삭제하고 각 4자리 숫자를 2자리 사이마다 공백을 넣고 싶어요
0x0000 38 ea a7 17 df 3c 14 fe b5 da e1 0e 08 00 45 00
이렇게요.
sed랑 awk, if를 써서 해보려고 했는데 너무 어렵네요.ㅠㅠ
도움 부탁드립니다.
[root@localhost ]# tcpdump -l -s 1700 -xx -A -i eth3 icmp
tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
listening on eth3, link-type EN10MB (Ethernet), capture size 1700 bytes
17:26:13.821676 IP 20.4.1.31 > 72.0.0.6: ICMP echo request, id 48478, seq 1, length 64
0x0000: 38ea a717 df3c 14fe b5da e10e 0800 4500
0x0010: 0054 0000 4000 4001 dd80 1404 011f 4800
0x0020: 0006 0800 f560 bd5e 0001 a559 0059 a889
0x0030: 0c00 0809 0a0b 0c0d 0e0f 1011 1213 1415
0x0040: 1617 1819 1a1b 1c1d 1e1f 2021 2223 2425
0x0050: 2627 2829 2a2b 2c2d 2e2f 3031 3233 3435
0x0060: 3637
17:26:14.820866 IP 20.4.1.31 > 72.0.0.6: ICMP echo request, id 48478, seq 2, length 64
0x0000: 38ea a717 df3c 14fe b5da e10e 0800 4500
0x0010: 0054 0000 4000 4001 dd80 1404 011f 4800
0x0020: 0006 0800 1c63 bd5e 0002 a659 0059 8086
0x0030: 0c00 0809 0a0b 0c0d 0e0f 1011 1213 1415
0x0040: 1617 1819 1a1b 1c1d 1e1f 2021 2223 2425
0x0050: 2627 2829 2a2b 2c2d 2e2f 3031 3233 3435
0x0060: 3637
17:26:15.829828 IP 20.4.1.31 > 72.0.0.6: ICMP echo request, id 48478, seq 3, length 64
0x0000: 38ea a717 df3c 14fe b5da e10e 0800 4500
0x0010: 0054 0000 4000 4001 dd80 1404 011f 4800
0x0020: 0006 0800 193f bd5e 0003 a759 0059 82a9
0x0030: 0c00 0809 0a0b 0c0d 0e0f 1011 1213 1415
0x0040: 1617 1819 1a1b 1c1d 1e1f 2021 2223 2425
0x0050: 2627 2829 2a2b 2c2d 2e2f 3031 3233 3435
0x0060: 3637
음 ..
되면 한다! / feel no sorrow, feel no pain, feel no hurt, there's nothing gained.. only love will then remain.. 『 Mizz 』
감사합니다
sed 만으로 가능했네요~~ 감사합니다~ :)
음.
계속 들여다봐도 믿을 수 없는 코드네요.. 실례가 안되면 \s(backslash s) 의 의미를 배울 수 있을까요? \1 \2 이러한 것의 존재도 난생 처음 봤습니다.
그저 감탄할 뿐입니다.
소곤소곤
음 ..
\s 가 perl regex 라고 한 부분은 그냥 기억에 있던 대로 적은 거였는데..
아무래도 뭔가 이상한 것 같아서 다시 확인해 보니, 잘못된 내용이어서 바로잡습니다.
\ 뒤에 sequence 를 넣는 것은 regex 의 shorthand character classes 에 정의되어 있는 내용입니다.
http://www.regular-expressions.info/shorthand.html
간단히 regex 매뉴얼 볼 때 주로 perlre 를 보다 보니.. 기억이 그렇게 굳어졌나 봅니다. ;;
POSIX 에서는 character class 에 bracket expression 을 사용하구요.
http://www.regular-expressions.info/posixbrackets.html
sed 에 대한 내용은 아래 매뉴얼 5.5, 5.6 을 보시면 될 것 같네요.
https://www.gnu.org/software/sed/manual/sed.txt
5.5 Character Classes and Bracket Expressions
5.6 regular expression extensions
두번째 \1 \2 는 sed capture group 을 reference 하는 겁니다.
\(pattern\) 과 같이 pattern 을 괄호로 감싸고, 거기서 매치된 pattern 을, \1 과 같이 순서대로 번호를 붙여서 참조하는 거죠.
되면 한다! / feel no sorrow, feel no pain, feel no hurt, there's nothing gained.. only love will then remain.. 『 Mizz 』
잘 배워 갑니다. 너무 감사드립니다.
잘 배워 갑니다. 너무 감사드립니다.
오늘따라 광선검이 더 빛나는 것 같네요 :-)
소곤소곤
댓글 달기