’, Â, � etc... How to fix strange encoding characters in WP or other SQL database
目次:
tr
コマンドの使用方法- 組み合わせオプション
- Trコマンドの例
- 小文字を大文字に変換
- 数字以外の文字をすべて削除します
- 各単語を新しい行に入れる
- 空白行を削除する
$PATH
ディレクトリを別の行に出力します- 結論
tr
は、標準入力から文字を変換、削除、および圧縮し、結果を標準出力に書き込むLinuxおよびUnixシステムのコマンドラインユーティリティです。
tr
コマンドは、繰り返し文字の削除、大文字から小文字への変換、基本的な文字の置換と削除などの操作を実行できます。 通常、パイピングを通じて他のコマンドと組み合わせて使用されます。
このチュートリアルでは、最も一般的なオプションの実用的な例と詳細な説明を通して、
tr
コマンドの使用方法を示します。
tr
コマンドの使用方法
tr
コマンドの構文は次のとおりです。
tr OPTION… SET1
tr
は、通常同じ長さの2つの文字セットを受け入れ、最初のセットの文字を2番目のセットの対応する文字に置き換えます。
SET
は基本的に、特殊なバックスラッシュでエスケープされた文字を含む文字列です。
次の例では、
tr
は最初のセットの文字を2番目のセットの一致する文字にマッピングすることにより、標準入力(linuxize)のすべての文字を置き換えます。
echo 'linuxize' | tr 'lin' 'red'
l
が現れるたびに
r
、
i
が
e
、
n
が
d
置き換えられます。
reduxeze
文字セットは、文字範囲を使用して定義することもできます。 たとえば、書く代わりに:
echo 'linuxize' | tr 'lmno' 'wxyz'
次を使用できます:
echo 'linuxize' | tr 'ln' 'w-z'
-c
(--
--complement
)オプションを使用すると、
tr
はSET1にないすべての文字を置き換えます。
以下の例では、「li」を除くすべての文字が2番目のセットの最後の文字に置き換えられます。
echo 'linuxize' | tr -c 'li' 'xy'
liyyyiyyy
お気づきかもしれませんが、上記の出力には、入力より1つ多くの目に見える文字があります。 これは、
echo
コマンドが非表示の改行文字
を出力し、これも
y
置き換えられるためです。 改行なしで文字列をエコーするには、
-n
オプションを使用します。
-d
(--delete)オプションは、SET1で指定された文字を削除するよう
tr
に指示します。 圧縮せずに文字を削除する場合は、1つのセットのみを指定します。
以下のコマンドは、
l
、
i
、
z
文字を削除します。
echo 'Linuxize' | tr -d 'liz'
SETの
l
文字が小文字であるのに、入力に大文字の
L
含まれているため、
L
文字は削除されません。
Lnuxe
-s
(--
--squeeze-repeats
)オプションは、繰り返し発生するシーケンスを最後のSETの文字セットに置き換えます。
次の例では、
tr
は繰り返しスペース文字を削除します。
echo "GNU \ Linux" | tr -s ' '
GNU \ Linux
SET2を使用すると、SET1で指定された文字のシーケンスがSET2に置き換えられます。
echo "GNU \ Linux" | tr -s ' ' '_'
GNU_\_Linux
-t
(--
--truncate-set1
)オプションは、さらに処理を行う前に、
tr
がSET1をSET2の長さに切り捨てるようにします。
デフォルトでは、SET1がSET2より大きい場合、
tr
はSET2の最後の文字を再利用します。 以下に例を示します。
echo 'Linux ize' | tr 'abcde' '12'
出力は、SET1の文字
e
がSET2の最新の文字である
2
と一致することを示しています。
Linux iz2
次に、
-t
オプションを指定して同じコマンドを使用します。
echo 'Linux ize' | tr -t 'abcde' '12'
Linux ize
SET1の最後の3文字が削除されていることがわかります。 SET1は「ab」になり、SET2と同じ長さになり、置換は行われません。
組み合わせオプション
tr
コマンドを使用すると、オプションを組み合わせることができます。 たとえば、次のコマンドは、最初に
i
以外のすべての文字を
0
置き換えてから、繰り返される
0
文字を圧縮します。
echo 'Linux ize' | tr -cs 'i' '0'
Trコマンドの例
このセクションでは、
tr
コマンドの一般的な使用例をいくつか
tr
ます。
小文字を大文字に変換
小文字から大文字への変換または逆変換は、
tr
コマンドの典型的な使用例の1つです。
すべての小文字に一致し、
すべての大文字に一致します。
echo 'Linuxize' | tr '' ''
LINUXIZE
文字クラスの代わりに、範囲を使用することもできます:
echo 'Linuxize' | tr 'az' 'A-Z'
大文字を小文字に変換するには、セットの場所を切り替えるだけです。
数字以外の文字をすべて削除します
次のコマンドは、すべての非数値文字を削除します。
echo "my phone is 123-456-7890" | tr -cd
はすべての数字を表し、
-c
オプションを使用すると、コマンドはすべての数字以外の文字を削除します。 出力は次のようになります。
各単語を新しい行に入れる
各単語を新しい行に入れるには、英数字以外の文字をすべて一致させて、新しい行に置き換える必要があります。
echo 'GNU is an operating system' | tr -cs '' '\n'
空白行を削除する
空白行を削除するには、単に繰り返しの改行文字を絞ってください。
tr -s '\n' < file.txt > new_file.txt
上記のコマンドでは、リダイレクト記号
<
を使用して、
file.txt
の内容を
tr
コマンドに渡します。 リダイレクトは、コマンドの出力を
new_file.txt
書き込みます。
$PATH
ディレクトリを別の行に出力します
$PATH
環境変数は、コマンドの入力時に実行可能ファイルを検索するディレクトリをシェルに指示するディレクトリのコロン区切りリストです。
各ディレクトリを個別の行に出力するには、コロン(:)に一致させて新しい行に置き換える必要があります。
echo $PATH | tr ':' '\n'
/usr/local/sbin /usr/local/bin /usr/sbin /usr/bin /sbin /bin
結論
tr
は、文字を翻訳または削除するためのコマンドです。
非常に便利ですが、
tr
は単一の文字でのみ機能します。 より複雑なパターンマッチングと文字列操作には、
sed
または
awk
を使用する必要があります。