trコマンド : 標準入力置換

Linuxコマンド(テキスト処理)
2023-10-10
ヒーローイメージ

目次
  1. コマンド概要
  2. コマンド書式
  3. コマンド使用例

コマンド概要

  • trコマンドは標準入力を指定条件で置換して標準出力するコマンドです。

    Note
    エスケープシーケンスの置換(削除)も可能であるため改行コードを変換(削除)したいケースなどでもよく利用されます。
  • 第1引数(文字列1)には変換対象の文字列を指定し、第2引数(文字列2)には変換後の文字列を指定します。

コマンド書式

コマンド書式
tr [オプション] [文字列1 [文字列2]]
オプション 説明

-c 文字列1 文字列2
--complement

指定した文字列1以外を文字列2で置換する。

-d 文字列
--delete

指定した文字列を削除する。

-s 文字列
--squeeze-repeats

指定した文字列の繰り返しを1文字に圧縮する。
  • 指定可能な文字列には以下のようなものがあります。

    指定方法 説明
    範囲 'a-z' '0-3'であれば0,1,2,3の4文字を意味し、'a-c'であればa,b,cと3文字を意味する。
    繰り返し 'a*3' 「a」の3個繰り返しを意味する。
    文字クラス [:alnum:] 英字と数字
    [:alpha:] 英字
    [:digit:] 数字
    [:lower:] 英小文字
    [:space:] 空白
    [:upper:] 英大文字

コマンド使用例

動作確認環境
項目 補足
OS Amazon Linux 2
シェル bash 4.2.46
コマンド tr (GNU coreutils) 8.22
PS1 [\u@\h \W]$ プロンプト表示形式は [ユーザ名@ホスト名 カレントディレクトリ名]ユーザ権限
PS2 > 継続行のプロンプト表示形式

tr : 文字列置換

  • trコマンドを使用すると標準入力を指定条件で置換して標準出力することができます。

    コマンド例
    // テスト用ファイル作成
    [username@hostname ~]$ echo 'Lorem ipsum dolor sit amet, consectetur adipisicing elit.' > tempfile1
    
    
    // テスト用ファイルの中身を出力
    [username@hostname ~]$ cat tempfile1
    Lorem ipsum dolor sit amet, consectetur adipisicing elit.
    
    // テスト用ファイルの中身について英小文字を英大文字に置換して出力
    [username@hostname ~]$ tr 'a-z' 'A-Z' < tempfile1LOREM IPSUM DOLOR SIT AMET, CONSECTETUR ADIPISICING ELIT.
    
    // テスト用ファイルの中身について英小文字を英大文字に置換して出力
    [username@hostname ~]$ tr [:lower:] [:upper:] < tempfile1LOREM IPSUM DOLOR SIT AMET, CONSECTETUR ADIPISICING ELIT.
    
    

tr -c : 指定文字以外を置換

  • -cオプションを使用すると指定文字以外を置換したテキストを出力します。

    コマンド例
    // テスト用ファイル作成
    [username@hostname ~]$ echo 'Lorem ipsum dolor sit amet, consectetur adipisicing elit.' > tempfile1
    
    
    // テストファイルの中身を表示
    [username@hostname ~]$ cat tempfile1
    Lorem ipsum dolor sit amet, consectetur adipisicing elit.
    
    // tempfile1の中身について指定文字(半角スペース、カンマ、ドット、改行コード)以外の文字列を「x」に置換して出力
    [username@hostname ~]$ tr -c ' ,.\n' x < tempfile1xxxxx xxxxx xxxxx xxx xxxx, xxxxxxxxxxx xxxxxxxxxxx xxxx.
    
    

tr -d : 指定文字を削除

  • -dオプションを使用すると指定文字列を削除して出力します。

    コマンド例
    // テスト用ファイル作成
    [username@hostname ~]$ echo -e 'aaa\r\nbbb\r\nccc' > tempfile1
    
    
    // テストファイルの中身を表示
    [username@hostname ~]$ cat -e tempfile1
    aaa^M$
    bbb^M$
    ccc$
    
    // 指定文字列を削除して出力(Windows改行コードCR+LFをUNIX改行コードLFに変換)
    [username@hostname ~]$ tr -d '\r' < tempfile1 | cat -eaaa$
    bbb$
    ccc$
    
    

tr -s : 繰り返し文字圧縮

  • -sオプションを使用すると指定した文字列の繰り返しを1文字にした上で出力します。

    コマンド例
    // テスト用ファイル作成
    [username@hostname ~]$ echo -e 'aaa\nbbb\nccc' > tempfile1
    
    
    // テストファイルの中身を表示
    [username@hostname ~]$ cat tempfile1
    aaa
    bbb
    ccc
    
    // 繰り返し文字を1文字に圧縮
    [username@hostname ~]$ tr -s ac < tempfile1a
    bbb
    c
    
    

コメント


Palette Codeなるべく丁寧にプログラミング関連技術を解説するサイト