sed 혹은 awk를 이용한 문자열 추출

madast의 이미지

[seeeee] test:[5678] abbbb memo:[1233] avvad asdfasd
[seeeee] memo:[4567] asdfasd ahskdfjhas
[seeeee] asdlksaldkj memo:[4992] asdjl asdjlkj

위와 같이 출력되는 결과에서

memo:[1233]
memo:[4567]
memo:[4992]

이렇게 추출하고 싶은데 memo:[xxxx]의 위치가 일정하지 않아 생각처럼 결과가 나오질 않네요...

pynoos의 이미지

모든 행에 있다면,
awk '{print gensub(".*(memo:\\[.*\\]).*", "\\1", "g", $0);}'
이런식으로 하면 될 것 같네요.

grep을 이용합니다.의 이미지

$ echo '[seeeee] test:[5678] abbbb memo:[1233] avvad asdfasd
[seeeee] memo:[4567] asdfasd ahskdfjhas
[seeeee] asdlksaldkj memo:[4992] asdjl asdjlkj' | grep -o 'memo:\[[0-9]\+\]'
memo:[1233]
memo:[4567]
memo:[4992]
sed을 이용합니다.의 이미지

$ echo '[seeeee] test:[5678] abbbb memo:[1233] avvad asdfasd
[seeeee] memo:[4567] asdfasd ahskdfjhas
[seeeee] asdlksaldkj memo:[4992] asdjl asdjlkj' | sed 's/^.*\(memo:[[0-9]\+]\).*$/\1/'
memo:[1233]
memo:[4567]
memo:[4992]
awk을 이용합니다.의 이미지

$ echo '[seeeee] test:[5678] abbbb memo:[1233] avvad asdfasd
[seeeee] memo:[4567] asdfasd ahskdfjhas
[seeeee] asdlksaldkj memo:[4992] asdjl asdjlkj' | awk 'match($0, /memo:[[0-9]+]/){print substr($0, RSTART, RLENGTH)}'
memo:[1233]
memo:[4567]
memo:[4992]