在 linux 中,我如何通过 shell 将 'quote' back-tic 转换为 sed。

nel*_*aro 4 linux script bash sed ascii

在 linux 中,我如何从 char 中获取 ascii 十进制/十六进制/八进制代码或从十进制/十六进制/八进制代码中获取 ascii 字符。

我从gnu sed 用户手册中看到我可以使用 \d# \o# \x# 来指定一个字符,但我不确定如何使用它。

如果有人有更好的方法来获取 ` 和 ' 字符,请帮助

我想用反引号 '`' 字符和 ''' 单引号字符进行 sed。

sed '/`/p'

这些不起作用

sed '/\'/p'
sed '/`/p'

jw0*_*013 7

不完全确定您要在那里做sed什么。这是你想要的?

printf "\x27 \x60\n"
# prints
# ' `

printf "%x %x\n" "''" "'\`"
# prints
# 27 60
Run Code Online (Sandbox Code Playgroud)

取自BashFAQ 071

编辑

sed无论是在其正则表达式中`还是'在其正则表达式中都非常好。您遇到问题的地方是通过 shell 解释器获取这些字符,因为单引号和反引号对 shell 都有特殊的含义,如果要使其进入 sed 而不用 bash 抛出语法错误或修改输入,则必须引用它们。

引用特殊字符的方法有三种:单引号'、双引号"和反斜杠\。他们的行为都有些不同。 '引用除自身之外的所有内容,因此您可以使用 this 来引用,`但不能使用'. "引用除\, `, and之外的所有内容$(在此无关紧要),因此您可以使用"来引用'而不是`\引用所有内容,以便您可以将其用于两者。只要保持引用规则直截了当(它们从左到右解释),就可以嵌套这些方法。

为了使事情更具体,假设您想要s/`'/replacement/sed正则表达式中。有很多方法可以做到这一点。下面给出两个不同的例子。

# concatenation of single-quoted s/`, backslash-quoted ', and 
# single-quoted remainder of the command
sed -e 's/`'\''/replacement/'

# one double-quoted string quotes the single-quote, but an 
# additional backslash is needed to quote the backtick 
sed -e "s/\`'/replacement/"
Run Code Online (Sandbox Code Playgroud)

只需记住引用规则并使用最易读的版本即可完成工作。有关QUOTING完整说明和参考,请参阅bash 手册中的部分。

最后一点,我会避免使用特殊的\d\x\o等因逃逸

  • 它们是 GNU 扩展sed,可能不如正确引用的模式可移植。
  • 读起来有点难。有多少人知道的ASCII值',并`关闭他们的头顶?


Nif*_*fle 5

在 shell 类型中,man ascii这将为您提供八进制、十六进制和十进制的字符代码。

ASCII(7)             BSD Miscellaneous Information Manual             ASCII(7)

NAME
     ascii -- octal, hexadecimal and decimal ASCII character sets

DESCRIPTION
     The octal set:

     000 nul  001 soh  002 stx  003 etx  004 eot  005 enq  006 ack  007 bel
     010 bs   011 ht   012 nl   013 vt   014 np   015 cr   016 so   017 si
     020 dle  021 dc1  022 dc2  023 dc3  024 dc4  025 nak  026 syn  027 etb
     030 can  031 em   032 sub  033 esc  034 fs   035 gs   036 rs   037 us
     040 sp   041  !   042  "   043  #   044  $   045  %   046  &   047  '
     050  (   051  )   052  *   053  +   054  ,   055  -   056  .   057  /
     060  0   061  1   062  2   063  3   064  4   065  5   066  6   067  7
     070  8   071  9   072  :   073  ;   074  <   075  =   076  >   077  ?
     100  @   101  A   102  B   103  C   104  D   105  E   106  F   107  G
     110  H   111  I   112  J   113  K   114  L   115  M   116  N   117  O
     120  P   121  Q   122  R   123  S   124  T   125  U   126  V   127  W
     130  X   131  Y   132  Z   133  [   134  \   135  ]   136  ^   137  _
     140  `   141  a   142  b   143  c   144  d   145  e   146  f   147  g
     150  h   151  i   152  j   153  k   154  l   155  m   156  n   157  o
     160  p   161  q   162  r   163  s   164  t   165  u   166  v   167  w
     170  x   171  y   172  z   173  {   174  |   175  }   176  ~   177 del

     The hexadecimal set:

     00 nul   01 soh   02 stx   03 etx   04 eot   05 enq   06 ack   07 bel
     08 bs    09 ht    0a nl    0b vt    0c np    0d cr    0e so    0f si
     10 dle   11 dc1   12 dc2   13 dc3   14 dc4   15 nak   16 syn   17 etb
     18 can   19 em    1a sub   1b esc   1c fs    1d gs    1e rs    1f us
     20 sp    21  !    22  "    23  #    24  $    25  %    26  &    27  '
     28  (    29  )    2a  *    2b  +    2c  ,    2d  -    2e  .    2f  /
     30  0    31  1    32  2    33  3    34  4    35  5    36  6    37  7
     38  8    39  9    3a  :    3b  ;    3c  <    3d  =    3e  >    3f  ?
     40  @    41  A    42  B    43  C    44  D    45  E    46  F    47  G
     48  H    49  I    4a  J    4b  K    4c  L    4d  M    4e  N    4f  O
     50  P    51  Q    52  R    53  S    54  T    55  U    56  V    57  W
     58  X    59  Y    5a  Z    5b  [    5c  \    5d  ]    5e  ^    5f  _
     60  `    61  a    62  b    63  c    64  d    65  e    66  f    67  g
     68  h    69  i    6a  j    6b  k    6c  l    6d  m    6e  n    6f  o
     70  p    71  q    72  r    73  s    74  t    75  u    76  v    77  w
     78  x    79  y    7a  z    7b  {    7c  |    7d  }    7e  ~    7f del

     The decimal set:

       0 nul    1 soh    2 stx    3 etx    4 eot    5 enq    6 ack    7 bel
       8 bs     9 ht    10 nl    11 vt    12 np    13 cr    14 so    15 si
      16 dle   17 dc1   18 dc2   19 dc3   20 dc4   21 nak   22 syn   23 etb
      24 can   25 em    26 sub   27 esc   28 fs    29 gs    30 rs    31 us
      32 sp    33  !    34  "    35  #    36  $    37  %    38  &    39  '
      40  (    41  )    42  *    43  +    44  ,    45  -    46  .    47  /
      48  0    49  1    50  2    51  3    52  4    53  5    54  6    55  7
      56  8    57  9    58  :    59  ;    60  <    61  =    62  >    63  ?
      64  @    65  A    66  B    67  C    68  D    69  E    70  F    71  G
      72  H    73  I    74  J    75  K    76  L    77  M    78  N    79  O
      80  P    81  Q    82  R    83  S    84  T    85  U    86  V    87  W
      88  X    89  Y    90  Z    91  [    92  \    93  ]    94  ^    95  _
      96  `    97  a    98  b    99  c   100  d   101  e   102  f   103  g
     104  h   105  i   106  j   107  k   108  l   109  m   110  n   111  o
     112  p   113  q   114  r   115  s   116  t   117  u   118  v   119  w
     120  x   121  y   122  z   123  {   124  |   125  }   126  ~   127 del

FILES
     /usr/share/misc/ascii

HISTORY
     An ascii manual page appeared in Version 7 AT&T UNIX.

BSD                              June 5, 1993                              BSD
Run Code Online (Sandbox Code Playgroud)