はじめに
Linuc Level1の取得に向けて勉強をしているので、コマンドのまとめをメモとして書きます。
取り上げるコマンドの一言説明、コマンド、コマンドのちょっと詳しい説明、実行結果を載せています。
解説
sedコマンドとは
ファイルや標準入力の内容を編集して表示する
→文字列を一部置換したり、全部置換したり、行を削除したり、文字を置換したりして表示できるコマンド
実践
準備
test.txtを作成
~$ cat test.txt
text1 text1.5
text2 text2.5
text3
text3.5
text4
text5
文字列の一部を置換
sed s/文字列1/文字列2/ ファイル名
各行最初に現れる文字列1だけを文字列2に置き換える
* 文字列2の後の/を忘れないこと
~$ sed s/text/T/ test.txt
T1 text1.5
T2 text2.5
T3
T3.5
T4
T5
文字列の全部を置換
sed s/文字列1/文字列2/g ファイル名
全ての文字列1を文字列2に置き換える
~$ sed s/text/T/g test.txt
T1 T1.5
T2 T2.5
T3
T3.5
T4
T5
特定の文字列を含む行を削除
sed /文字列/d ファイル名
文字列が含まれる行を削除する
一致不一致は部分一致で判断される(例ではtext3を指定し、text3.5の行も削除される)
~$ sed /text3/d test.txt
text1 text1.5
text2 text2.5
text4
text5
行番号をしていして削除
sed 行番号1,行番号2d ファイル名
行番号1から行番号2までの行を削除
~$ sed 1,3d test.txt
text3.5
text4
text5
文字を置換する
sed y/文字1文字2.../文字1'文字2'.../ ファイル名
文字1を文字1'に、文字2を文字2'に置き換える
~$ sed y/x,1/s,6/ test.txt
test6 test6.5
test2 test2.5
test3
test3.5
test4
test5
オプション
編集コマンド(上記で説明したもの)を2つ以上組み合わせる
sed -e 編集コマンド1 -e 編集コマンド2 ... ファイル名
$ sed -e s/text/T/ -e s/T/TT/g test.txt
TT1 text1.5
TT2 text2.5
TT3
TT3.5
TT4
TT5
編集コマンドをファイルに記述し、ファイルを読み込む
sed -f コマンドファイル(.sed) ファイル名
*編集コマンドを記述するファイルの拡張子は.sed、編集コマンドのみを記載する
~$ cat command.sed
1,3d
~$ sed -f command.sed test.txt
text3.5
text4
text5