Linux備忘録18:後方参照、文字列変換(sed、tr、expand)

 【sed正規表現を使用する】

# sed -r -e "s/\t+/,/g" {ファイル}

上記はタブ部分を全て、単一カンマに変換する場合の例。
※-rオプションを使用する
※trコマンドはデフォルトで正規表現使用可

 

 【sedの置き換えで後方参照を使用する】

後方参照させたい(置き換えしたくない)部分を丸括弧()でくくる

※参照部分は\1、\2、\3で使用可能。

 ⇒192.168.0.192というIPのうち、末尾の192だけ置換する

sed -r -e "s/(192.168.0.)192/\1254/g"

※アンダーライン箇所が参照部分

 

以下のようなテキストファイル(test)でwindowsに付随する【置換前】のみを置換する

windows部分は変更されないようにする

# cat test
Windows 置換前
mac 置換前
windows 置換前
MAC 置換前
UNIX 置換前
linux 置換前
Linux 置換前
Windows XP 置換前
Windows VISTA 置換前

 

# sed -r -e "s/(windows.*)置換前/\1置換済み/gi" test

       ※スクリプトのgiオプションは、g(全該当箇所) 、i(大文字、小文字を区別しないの意味)

 

 ●出力結果

 Windows 置換済み
 mac 置換前
 windows 置換済み
 MAC 置換前
 UNIX 置換前
 linux 置換前
 Linux 置換前
 Windows XP 置換済み
 Windows VISTA 置換済み

 

 【tabをスペースに変換して標準出力する】

# expand {ファイル}

 

 

 【ファイルを結合する】
 pasteコマンド
二つ以上のファイルを第一引数から順番に、最終カラムで結合して表示する

 

# paste tmp_*

※カレントのtmp_*を全て結合する、結合部分はタブで埋められる