这个是神码意思?grep '^[:alpha:]'

sh/bash/dash/ksh/zsh等Shell脚本
回复
头像
13378333
帖子: 322
注册时间: 2012-05-31 12:00

这个是神码意思?grep '^[:alpha:]'

#1

帖子 13378333 » 2012-08-28 18:12

grep '^[:alpha:]'
头像
cnkilior
论坛版主
帖子: 4984
注册时间: 2007-08-05 17:40

Re: 这个是神码意思?grep '^[:alpha:]'

#2

帖子 cnkilior » 2012-08-28 18:38

字幕开头
头像
13378333
帖子: 322
注册时间: 2012-05-31 12:00

Re: 这个是神码意思?grep '^[:alpha:]'

#3

帖子 13378333 » 2012-08-28 22:51

cnkilior 写了:字幕开头
alpha表示字母吗?还是:alpha:表示字母? :em20
tusooa
帖子: 6548
注册时间: 2008-10-31 22:12
系统: 践兔
联系:

Re: 这个是神码意思?grep '^[:alpha:]'

#4

帖子 tusooa » 2012-08-28 23:12

[[:alpha:]]表示字母。

代码: 全选

] ls -ld //
tusooa
帖子: 6548
注册时间: 2008-10-31 22:12
系统: 践兔
联系:

Re: 这个是神码意思?grep '^[:alpha:]'

#5

帖子 tusooa » 2012-08-28 23:13

以下摘录自grep(1),版权由manpage指定。

代码: 全选

   Character Classes and Bracket Expressions
       A bracket expression is a list of characters  enclosed  by  [  and  ].   It
       matches  any  single  character in that list; if the first character of the
       list is the caret ^ then it matches any character not  in  the  list.   For
       example, the regular expression [0123456789] matches any single digit.

       Within  a bracket expression, a range expression consists of two characters
       separated by a hyphen.  It matches any single character that sorts  between
       the  two  characters,  inclusive, using the locale's collating sequence and
       character set.  For example, in the default C locale, [a-d]  is  equivalent
       to  [abcd].  Many locales sort characters in dictionary order, and in these
       locales [a-d] is typically not equivalent to [abcd]; it might be equivalent
       to  [aBbCcDd],  for  example.   To obtain the traditional interpretation of
       bracket expressions, you can  use  the  C  locale  by  setting  the  LC_ALL
       environment variable to the value C.

       Finally,  certain named classes of characters are predefined within bracket
       expressions, as follows.  Their names are self explanatory,  and  they  are
       [:alnum:],   [:alpha:],   [:cntrl:],   [:digit:],   [:graph:],   [:lower:],
       [:print:], [:punct:], [:space:], [:upper:], and [:xdigit:].   For  example,
       [[:alnum:]] means the character class of numbers and letters in the current
       locale. In the C locale and ASCII character set encoding, this is the  same
       as  [0-9A-Za-z].   (Note that the brackets in these class names are part of
       the symbolic names, and must  be  included  in  addition  to  the  brackets
       delimiting  the  bracket  expression.)   Most  meta-characters  lose  their
       special meaning inside bracket expressions.  To include a literal  ]  place
       it  first in the list.  Similarly, to include a literal ^ place it anywhere
       but first.  Finally, to include a literal - place it last.

代码: 全选

] ls -ld //
tusooa
帖子: 6548
注册时间: 2008-10-31 22:12
系统: 践兔
联系:

Re: 这个是神码意思?grep '^[:alpha:]'

#6

帖子 tusooa » 2012-08-28 23:15

代码: 全选

● /bin/grep '^[:alpha:]' <<< 'ls'
/bin/grep: 字符类的语法是 [[:space:]],而非 [:space:]

代码: 全选

] ls -ld //
头像
lilydjwg
论坛版主
帖子: 4258
注册时间: 2009-04-11 23:46
系统: Arch Linux
联系:

Re: 这个是神码意思?grep '^[:alpha:]'

#7

帖子 lilydjwg » 2012-08-28 23:38

[:alpha:] 就是其中那几个字符的或……POSIX 风格的字符类是放在字符类 [] 中的 [:name:],不用两层 [] 会有二义性。
头像
13378333
帖子: 322
注册时间: 2012-05-31 12:00

Re: 这个是神码意思?grep '^[:alpha:]'

#8

帖子 13378333 » 2012-08-29 18:06

tusooa 写了:以下摘录自grep(1),版权由manpage指定。

代码: 全选

   Character Classes and Bracket Expressions
       A bracket expression is a list of characters  enclosed  by  [  and  ].   It
       matches  any  single  character in that list; if the first character of the
       list is the caret ^ then it matches any character not  in  the  list.   For
       example, the regular expression [0123456789] matches any single digit.

       Within  a bracket expression, a range expression consists of two characters
       separated by a hyphen.  It matches any single character that sorts  between
       the  two  characters,  inclusive, using the locale's collating sequence and
       character set.  For example, in the default C locale, [a-d]  is  equivalent
       to  [abcd].  Many locales sort characters in dictionary order, and in these
       locales [a-d] is typically not equivalent to [abcd]; it might be equivalent
       to  [aBbCcDd],  for  example.   To obtain the traditional interpretation of
       bracket expressions, you can  use  the  C  locale  by  setting  the  LC_ALL
       environment variable to the value C.

       Finally,  certain named classes of characters are predefined within bracket
       expressions, as follows.  Their names are self explanatory,  and  they  are
       [:alnum:],   [:alpha:],   [:cntrl:],   [:digit:],   [:graph:],   [:lower:],
       [:print:], [:punct:], [:space:], [:upper:], and [:xdigit:].   For  example,
       [[:alnum:]] means the character class of numbers and letters in the current
       locale. In the C locale and ASCII character set encoding, this is the  same
       as  [0-9A-Za-z].   (Note that the brackets in these class names are part of
       the symbolic names, and must  be  included  in  addition  to  the  brackets
       delimiting  the  bracket  expression.)   Most  meta-characters  lose  their
       special meaning inside bracket expressions.  To include a literal  ]  place
       it  first in the list.  Similarly, to include a literal ^ place it anywhere
       but first.  Finally, to include a literal - place it last.
试了下 [:alnum:], [:alpha:],好像都可以的样子
tusooa
帖子: 6548
注册时间: 2008-10-31 22:12
系统: 践兔
联系:

Re: 这个是神码意思?grep '^[:alpha:]'

#9

帖子 tusooa » 2012-08-30 14:51

13378333 写了:
tusooa 写了:以下摘录自grep(1),版权由manpage指定。

代码: 全选

   Character Classes and Bracket Expressions
       A bracket expression is a list of characters  enclosed  by  [  and  ].   It
       matches  any  single  character in that list; if the first character of the
       list is the caret ^ then it matches any character not  in  the  list.   For
       example, the regular expression [0123456789] matches any single digit.

       Within  a bracket expression, a range expression consists of two characters
       separated by a hyphen.  It matches any single character that sorts  between
       the  two  characters,  inclusive, using the locale's collating sequence and
       character set.  For example, in the default C locale, [a-d]  is  equivalent
       to  [abcd].  Many locales sort characters in dictionary order, and in these
       locales [a-d] is typically not equivalent to [abcd]; it might be equivalent
       to  [aBbCcDd],  for  example.   To obtain the traditional interpretation of
       bracket expressions, you can  use  the  C  locale  by  setting  the  LC_ALL
       environment variable to the value C.

       Finally,  certain named classes of characters are predefined within bracket
       expressions, as follows.  Their names are self explanatory,  and  they  are
       [:alnum:],   [:alpha:],   [:cntrl:],   [:digit:],   [:graph:],   [:lower:],
       [:print:], [:punct:], [:space:], [:upper:], and [:xdigit:].   For  example,
       [[:alnum:]] means the character class of numbers and letters in the current
       locale. In the C locale and ASCII character set encoding, this is the  same
       as  [0-9A-Za-z].   (Note that the brackets in these class names are part of
       the symbolic names, and must  be  included  in  addition  to  the  brackets
       delimiting  the  bracket  expression.)   Most  meta-characters  lose  their
       special meaning inside bracket expressions.  To include a literal  ]  place
       it  first in the list.  Similarly, to include a literal ^ place it anywhere
       but first.  Finally, to include a literal - place it last.
试了下 [:alnum:], [:alpha:],好像都可以的样子
是[[]]

代码: 全选

] ls -ld //
回复