Software
RaspberryPi
元に戻る

Shell Commands sed 2024/11/01

本文目次

本文以外目次
1.命令の書き方
 (1)オプション名
 (2)命令名
 (3)記載例
■RaspberryPi
 (1)RaspberryPi Hardware
 (2)RaspberryPi OS Install & I/Otest
 (3)RaspberryPi Programming
 (4)RaspberryPi Shell Commands i2ctools
■Python (プログラム言語)
 (1)Python_Start
 (2)Python_Library
 (3)Python_Device Control
 (4)Python Module SMBus
 (5)PythonPackageInstaller pip
■その他
 (1)正規表現
 (2)ASCIIコード


本   文

1.命令の書き方

 sed[オプション]'命令'[入力ファイル]

命令には置換、削除、挿入 などの編集操作を指定します。
入力ファイルが指定されない場合、標準入力から読み込みます

標準入力: プログラムの標準的な入力。通常はキーボードが使用される。
標準出力: 通常はディスプレーが使用される。
標準エラー出力: エラーメッセージを表示するための出力で、ディスプレーが使用される。

(1)オプション名
オプション名 説   明
-e 複数のスクリプトを指定する場合に使用 sed -e ‘s/foo/bar/’ -e ‘s/baz/qux/’
-f スクリプトファイルを指定して実行 sed -f testS.sed test.txt
-i 編集結果を直接ファイルに上書き sed -i ‘s/foo/bar/’ test.txt
-I 拡張子を指定して、バックアップを作成しながら編集 sed -i.bak ‘s/foo/bar/’ test.txt
-n デフォルトで出力を抑制し、pオプションで指定した行のみ表示 sed -n ‘s/foo/bar/p’ test.txt
-r 拡張正規表現を使用 sed -r ‘s/(foo
-E -rオプションと同様、拡張正規表現を使用 sed -E ‘s/(foo
-s 複数のファイルを入力として受け取り、それぞれに対して処理 sed -s ‘s/foo/bar/’ test.txt test2.txt
-u 出力をバッファリングせず、アンバッファードモードで実行 sed -u ‘s/foo/bar/’ test.txt
-z データを行単位ではなく、NULL区切りで処理 sed -z ‘s/foo/bar/’ test.txt

(2)命令名
説    明 構   文
文字列の置換 s/検索パターン/置換パターン/[フラグ]
行の削除 /検索パターン/d
行の挿入 /検索パターン/i\挿入テキスト
行の追加 /検索パターン/a\追加テキスト
行の変更 /検索パターン/c\変更テキスト
行のプリント /検索パターン/p
行のプリント抑制 /検索パターン/n
行のプリント・次行読込 /検索パターン/N
ホールドバッファへのコピー /検索パターン/h
ホールドバッファへの追加 /検索パターン/H
ホールドバッファの内容をパターンスペースにコピー /検索パターン/g
ホールドバッファの内容をパターンスペースに追加 /検索パターン/G
パターンスペースの内容をホールドバッファに交換 /検索パターン/x
パターンスペースの内容を削除して次行読込 /検索パターン/D
ブランチ /検索パターン/b[ラベル]
テストとブランチ /検索パターン/t[ラベル]
ラベル :ラベル
次のコマンドにスキップ #
行の表示(制御文字を可視化) /検索パターン/l
パターンスペースの内容を削除して終了 /検索パターン/q
[目次に戻る]

(3)記載例
下記内容のtest.txtの内容を変更します。
start
out
false
01234
true
Orange

a.ファイルの文字列"true"を"false"に置換ます。
tryday@tryday:~ $ sed 's/true/false/' test.txt
start
out
false
01234
false
Orange

b.ファイルの文字列"out"を含む行を削除します。
tryday@tryday:~ $ sed '/out/d' test.txt
start
false
01234
true
Orange

c.ファイルの文字列"false"を含む行の前に"end"を挿入します。
tryday@tryday:~ $ sed '/false/i\end/' test.txt
start
end
false
01234
true
Orange

d.ファイルの文字列"false"を含む行の後に"end"を追加します。
tryday@tryday:~ $ sed 's/false/a\end/' test.txt
start
false
end
01234
true
Orange

e.複数の命令を実行
"start" を "set" に置換し、"faise"を含む行を削除します。
tryday@tryday:~ $ sed -e 's/start/set/' -e '/false/d' test.txt
set
end
01234
true
Orange

f.正規表現
数字を”NUM"に置換る
tryday@tryday:~ $ sed 's/[0-9]\+/NUM/' test.txt
set
end
NUM
true
Orange

g.ファイルの一括置換
複数のファイル内の “Orange” を “Raspberry” に置換します。
予め test1.txt teset2 に文字 Orangeをいれて保存しておく
tryday@tryday:~ $ sed -i 's/apple/orange/' test.txt test1.txt teset2.txt
set
end
NUM
true
Raspberry

h.コマンドの連携
grepで “Raspberry” を含む行を抽出し、その後 sedで “Raspberry” を “Orange” に置換します。
tryday@tryday:~ $ sed 'Raspberry' test.txt | sed 's/Raspberry/Orange/'
set
end
NUM
>true
Orange

i.スクリプトスクリプトファイルを利用した処理
予め testS.sed を利用し test.txtを処理する
tryday@tryday:~ $ sed -f testS.sed test.txt


[目次に戻る]