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