GNU/Linux >> Linux の 問題 >  >> Linux

スマートクォートをLinuxsedコマンドに置き換えます

タイポグラフィでは、引用符のペアは伝統的に互いに向けられていました。次のようになります:

「スマートクォート」

20世紀半ばにコンピューターが普及するにつれ、その方向性はしばしば見捨てられました。コンピュータの元の文字セットには余裕がなかったため、ASCII仕様では2つの二重引用符と2つの単一引用符がそれぞれ1つに減らされたのは理にかなっています。最近の一般的な文字セットはUnicodeであり、多くの派手な引用符とアポストロフィを入れるための十分なスペースがありますが、多くの人は、引用符の開始と終了の両方で1文字だけのミニマリズムに慣れています。それに加えて、コンピューターは実際にはさまざまな種類の引用符とアポストロフィを別個の文字として認識します。言い換えると、共犯者にとって、右の二重引用符は、左の二重引用符またはまっすぐな引用符とは異なります。

その他のLinuxリソース

  • Linuxコマンドのチートシート
  • 高度なLinuxコマンドのチートシート
  • 無料のオンラインコース:RHELの技術概要
  • Linuxネットワーキングのチートシート
  • SELinuxチートシート
  • Linuxの一般的なコマンドのチートシート
  • Linuxコンテナとは何ですか?
  • 最新のLinux記事

スマートクォートをsedに置き換える

コンピューターはタイプライターではありません。キーボードのキーを押すときは、インクスタンプが付いたレバーを押しているのではありません。コンピューターに信号を送信するボタンを押すだけで、コンピューターは特定の事前定義された文字を表示する要求として解釈します。リクエストはキーボードマップによって異なります。 Dvorakタイピストとして、キーボードの「asdf」が画面に「aoeu」を生成することを人々が発見したとき、人々の顔が混乱するのを目撃しました。また、キーボードに印刷されていない™、ß、≠などの文字を生成するために、キーの特別な組み合わせを押した可能性もあります。

キーボードに印刷されているかどうかに関係なく、各文字または文字にはコードがあります。文字エンコードはさまざまな方法で表現できますが、コンピューターでは、Unicodeシーケンスu2018およびu2019がを生成します。 および 、コードu201cとu201dはを生成しますが、 および 文字。これらの「秘密の」コードを知っているということは、sedのようなコマンドを使用してプログラムでそれらを置き換えることができることを意味します。 sedのどのバージョンでも問題ないので、GNUsedまたはBSDsed、さらにはBusyboxsedを使用できます。

私が使用する簡単なシェルスクリプトは次のとおりです。

#!/bin/sh
# GNU All-Permissive License

SDQUO=$(echo -ne '\u2018\u2019')
RDQUO=$(echo -ne '\u201C\u201D')
$SED -i -e "s/[$SDQUO]/\'/g" -e "s/[$RDQUO]/\"/g" "${1}"

このスクリプトをfixquotes.shとして保存します 次に、スマートクォートを含む別のテストファイルを作成します。

‘Single quote’
“Double quote”

スクリプトを実行し、catコマンドを使用して結果を確認します。

$ sh ./fixquotes.sh test.txt
$ cat test.txt
'Single quote'
"Double quote"

sedをインストール

Linux、BSD、またはmacOSを使用している場合は、すでにGNUまたはBSDがsedされています。 インストールされています。これらは、元のsedの2つの独自の再実装です。 コマンドであり、この記事のスクリプトの場合、機能的には同じです(ただし、すべてのスクリプトに当てはまるわけではありません)。

Windowsでは、Chocolateyを使用してGNUsedをインストールできます。


Linux
  1. statコマンドを使用してLinuxのファイルステータスを確認します

  2. Linuxatコマンドでタスクをスケジュールする

  3. Linuxsedコマンドの使用方法

  1. Linuxcronコマンドを使用したタスクのスケジューリング

  2. Linuxlsコマンドをマスターする

  3. Linux Sedコマンド:使用法と例

  1. Linuxのpingコマンドで接続の問題を診断する

  2. Linuxのwatchコマンドでコマンドとタスクを監視する

  3. スマートクォートをLinuxsedコマンドに置き換えます