【linuxメモ】 cat sed

説明の前提、カレントディレクトリに以下のファイルがあるとする。

hoge1
hoge2
hoge3

cat

  • 定義 ファイル内容を標準出力に表示
$ cat hoge.txt
hoge1
hoge2
hoge3

と出力される。

-nをつけると、行番号が表示される。

$ cat -n hoge.txt
1   hoge1
2   hoge2
3   hoge2

sed

  • 定義 文字列の置換、行の削除を行なう。
  • オプション 「i」ファイルを直接編集、「e」スクリプトを実行

置換

eオプションに続いてスクリプト「s/置換前/置換後/」を用いると置換出来る。

# 末尾にgをつけると全て置換、数値の場合はマッチした番号を置換
# 全行で置き換えを実施 テキスト文にある test→hoge
$ sed -ie "s/test/hoge/g" hoge.txt

# 正規表現も使える。
$ sed -ie "s/./tttt/g" hoge.txt
$ sed -ie "s/^hoge$/test/g" hoge.txt

 削除

#1行目を削除
$ sed '1d' hoge.txt
#1~3行目を削除
$ sed '1,3d' hoge.txt

リダイレクトすれば、勿論新規ファイル作成も出来る。

# hoge → test 置き換えファイル作成
$ sed -e "s/hoge/test/g" > test2.txt