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

おすすめ記事