sed 문제

sed 문제
root@ROUTER:~# cat maccheck.txt 
logread | egrep ': STA |DHCPACK' | awk '{print $1" "$2" "$3" "$9}' | sed -e 's/\( [0-9] \)/0\1/' | sed "s/.\{15\}/&:/; s/: /:/g" | cut -d : -f 1,2,4,5,6,7,8,9 | sed "s/.\{13\}/&X/;" | sed 's/:X/ /g' | sed 's/XX:XX:XX:XX:XX:XX/AAAA/g' | sort -u -r

여기 있으면 괜찮아요:

root@ROUTER:~# logread | egrep ': STA |DHCPACK' | awk '{print $1" "$2" "$3" "$9}' | head -1
Sep 2 03:03:25 XX:XX:XX:XX:XX:XX

하지만 내용이 더 많은 스크립트를 사용하면 좋지 않습니다.

root@ROUTER:~# sh maccheck.txt |head -1
Sep0 4 13:13 AAAA

그러면 "Sep0"은 불량입니다. "Sep"으로 수정하는 방법은 무엇입니까?

root@ROUTER:~# logread | egrep ': STA |DHCPACK' | awk '{print $1" "$2" "$3" "$9}' | sed -e 's/\( [0-9] \)/0\1/' | head -1
Sep0 2 03:03:25 AAAA

질문은 다음과 같습니다.

sed -e 's/\( [0-9] \)/0\1/'

묻다:동일한 출력이 필요하지만 "Sep"에 "0"이 없으면 어떻게 해야 합니까?

답변1

\1귀하 의 그룹(해당 섹션) \( \)에 나열된 모든 항목이 제공됩니다. 그룹에 공백이 포함되어 있으므로 0이 입력되고 "2"가 추가됩니다.

수정하려면 다음으로 변경하세요.

sed -e 's/ \([0-9]\) / 0\1 /'

앞으로

$ cat sample.txt | sed -e 's/\( [0-9] \)/0\1/' 
Sep0 2 03:03:25 XX:XX:XX:XX:XX:XX

뒤쪽에

$ cat sample.txt | sed -e 's/ \([0-9]\) / 0\1 /'
Sep 02 03:03:25 XX:XX:XX:XX:XX:XX

관련 정보