trコマンドおよびsedコマンド

5466 ワード

trコマンド
trは、文字を回転させるために使用されます.すなわち、2つの文字範囲が与えられている場合、ある文字が最初の範囲にあることを発見すると、2番目の範囲の対等な文字に変換されます.このコマンドは通常shellスクリプトで使用され、予想通りにデータを変換します.
 tr 'A-Z' 'a-z' <file
[root@localhost ~]# cat /aaa/file1
redhat
[root@localhost ~]# tr 'a-z' 'A-Z' <  /aaa/file1   ##        a-z              
REDHAT
[root@localhost ~]# tr 'A-Z' 'a-z' <  /aaa/file1   ##        a-z              
redhat

sedコマンド
•sedコマンドは、テキスト・データ・ストリームの編集を実行するストリーム・エディタです.ファイル名を処理すると仮定すると、sedはファイル内のすべての行を検索して置き換え、変更したデータを標準出力に送信します.つまり、既存のファイルは実際には変更されません.grepと同様に、sedは通常パイプで使用されます•sedコマンドにはshellメタ文字として解釈できる文字が含まれているため、次の例に示すようにsedコマンドを参照してください.デフォルトでは、sedはファイル内のすべてのローに対して操作を実行します.sedの提供時にアドレスを付けることができます
sed 's/   /    /g' file  ##              
sed -e '  1' -e '  2' file   ##  :sed -e 's/root/'
sed '3,5s/   /    /g'   ##3-5   
sed xd              ##     
sed -e  xp              ##     
sed -n xp           ##       
    :
sed -i  file            ##              ,         

sedコマンドに-iを付けないでファイルの内容を変更しません
[root@localhost ~]# cat /aaa/file1
test:root:sssd
TEST:sssd:root
TEST:sssd:root
sssd:test:test
root:test:sssd
root:root:sssd
[root@localhost ~]# sed 's/test/root/g' /aaa/file1  ##        test  root
root:root:sssd
TEST:sssd:root
TEST:sssd:root
sssd:root:root
root:root:sssd
root:root:sssd
[root@localhost ~]# sed '1,2s/sssd/root/g' /aaa/file1  ##         sssd  root
test:root:root
TEST:root:root
TEST:root:root
root:test:test
root:test:root
root:root:root
[root@localhost ~]# sed -e 1p -e 2p /aaa/file1  ##                         
test:root:root
test:root:root  ##      
TEST:root:root
TEST:root:root  ##      
TEST:root:root
root:test:test
root:test:root
root:root:root
[root@localhost ~]# sed -n  1,6p /aaa/file1  ##              
test:root:root
TEST:root:root
TEST:root:root
root:test:test
root:test:root
root:root:root
[root@localhost ~]# sed -n 2,4p /aaa/file1   ##              
TEST:root:root
TEST:root:root
root:test:test
[root@localhost ~]# sed -ne 2p -ne 4p /aaa/file1  ##                    ,    
TEST:root:root
root:test:test
[root@localhost ~]# sed -e 's/root/test/g' -e 's/test/root/g' /aaa/file1  ## e            
root:root:root
TEST:root:root
TEST:root:root
root:root:root
root:root:root
root:root:root
[root@localhost ~]# sed -i 's/root/test/g' /aaa/file1   ##        
[root@localhost ~]# cat /aaa/file1
test:test:test
TEST:test:test
TEST:test:test
test:test:test
test:test:test
test:test:test