Linuxでは、シェルを介してsedにバッククォートを引用するにはどうすればよいですか。

Linuxでは、charからASCIIの10進数/ 16進数/ octコードを取得する方法、または10進数/ 16進数/ octコードからASCII文字を取得する方法はありますか。

GNUユーザーマニュアルから、私が使用できることがわかります。 \ d#\ o#\ x# 文字を指定するが、私はそれを使用する方法がわからない。

もし誰かが `and '文字を通すより良い方法を持っているなら助けてください

バッククォートの ""文字と ""シングルクォート文字を使用してsedを実行したいのですが。

sed '/ `/ p'

これらは機能しません

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

3
文字を変換するときの今後の参照用に... asciitable.com
追加された 著者 Rick Kierner,
@ jw013あなたは編集リンクをクリックして購入後を編集することができます。加えて、あなたが行うすべての編集に対して+ 2担当者を獲得します。私が持っていた2つの問題に対するあなたのすべての助けをありがとう。ありがとうございました。
追加された 著者 nelaaro,
参考までに、「バックティック」です。 はティルダです。
追加された 著者 jw013,

4 答え

sed を使って何をしようとしているのか完全にはわかりません。これはあなたが探しているものですか?

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

printf "%x %x\n" "''" "'\`"
# prints
# 27 60

Taken from BashFAQ 071

編集

sed is perfectly fine with either ` or ' in its regex. Where you are running into problems is getting those characters through the shell interpreter since both single quote and backtick have special meaning to the shell, and must be quoted if they are to make it to sed without bash throwing a syntax error or mangling the input.

特殊文字を引用符で囲む方法は3つあります。一重引用符 '、二重引用符 "、およびバックスラッシュ \ です。これらはすべて少し動作が異なります。< code> 'はそれ以外のものすべてを引用符で囲むので、これを使用して `を引用できますが、' は引用できません。" code> \ 、 `、および $ (ここでは関係ありません)なので、" を使用して '<を引用できます。 `ではなく/ code> \ ですべてを引用符で囲むことで、両方の引用符を使用できます。左から右に解釈されます)。

より具体的にするために、 sed 正規表現に s/`'/ replacement/が必要だとします。これを行うには多くの方法があります。 2つの異なる例を以下に示します。

# 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/"

引用規則を念頭に置いて、仕事を終わらせる最も読みやすいバージョンを使用するだけです。完全な説明と参照についてはbashマニュアルの QUOTING セクションを見てください。

最後の注意として、特別な \ d \ x \ o などのエスケープを使用しないようにします

  • sed に対するGNUの拡張機能で、適切に引用符で囲まれたパターンよりも移植性が低い場合があります。
  • 読むのが少し難しいです。頭の上に ' `のASCII値があることを知っている人は何人ですか?
6
追加された
それが問題の背景です。私はsed文の中で `or 'を使うことはできず、またそれらをエスケープすることもできません。だから私はそれを回避する方法を探していました。
追加された 著者 nelaaro,
おかげで、物事が簡単になります。私はグーグルから返されたこれらすべての異なるsedチュートリアルを見ていましたが、逃げ方についての指示はありませんでした。おかげで人生がずっと楽になります。
追加された 著者 nelaaro,
おかげでこの答えは3つの恐ろしい文字を一致させるのに役立ちました/ `'
追加された 著者 ropata,
@nelaarエスケープ処理を説明するために回答を更新しました。
追加された 著者 jw013,

シェルタイプが man ascii の場合、これは8進数、16進数、10進数の文字コードを表示します。

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
5
追加された
すごく便利です、ありがとう。
追加された 著者 nelaaro,

私はこれを別のフォーラムで見つけました:

perl -ne 'if(/'\''(.*)'\''/) {print $1}'

少し長くてPerlを使っていますが、うまくいきます:)。

使用法:

echo "'string with single quotation marks'" | perl -ne 'if(/'\''(.*)'\''/) {print $1}'
2
追加された

その1つの方法は、検索したい文字を[]で囲むことです

これはうまくいきますが、bashが `ティルド文字を捕まえるのにまだ問題がありました。

sed -n '/ [`]/p'

['] quoteはそれほど効果的ではなく、コマンドラインの展開時にbashによって捕捉されます。

$ sed -n '/[']/p' ./final/kh_elec_main.db.fin.dump  
> ^C

これはどのように動作しますか。今私は `= ascii 96を '= ascii 39に置き換えることができます

$ printf "%d%d \ n" "''" "'` "
  39 96
  sed -ne/\ d96/\ d39/gp '

0
追加された