正規表現の()の使い方について質問させてください。例えば、linuxにおける/dev/配下のブロックデバイス及びキャラクタデバイス(ls -lの行頭がbもしくはcのもの)のみ引っ掛けようとした場合、ls -l /dev/ | grep '^(b|c)'もしくは、ls -l /dev/ | grep '^b|^c'ではヒットしませんでした。その代わり、ls -l /dev/ | grep '^[bc]'では期待通りの結果が出ました。
私の認識では、()は正規表現をひとまとまりにするものなので、'^(b|c)'で問題ないと思ったのですが、何か勘違いをしているのでしょうか。ご存知の方、教えて頂けると幸いです。
[root@localhost ~]# ls -l /dev/ | grep '^(b|c)' [root@localhost ~]#
[root@localhost ~]# ls -l /dev/ | grep '^b|^c' [root@localhost ~]#
[root@localhost ~]# ls -l /dev/ | grep '^[bc]' crw-------. 1 root root 10, 235 3月 6 09:11 autofs crw-------. 1 root root 10, 234 3月 6 09:11 btrfs-control crw-------. 1 root root 5, 1 3月 6 09:12 console crw-------. 1 root root 10, 61 3月 6 09:11 cpu_dma_latency crw-------. 1 root root 10, 62 3月 6 09:11 crash brw-rw----. 1 root disk 253, 0 3月 6 09:11 dm-0 brw-rw----. 1 root disk 253, 1 3月 6 09:11 dm-1 brw-rw----. 1 root disk 253, 2 3月 6 09:11 dm-2
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。