📢 Webサイト閉鎖と移転のお知らせ
このWebサイトは2026年9月に閉鎖いたします。
新しい記事は移転先で追加しております。(旧サイトでは記事を追加しておりません)
| (同じ利用者による、間の8版が非表示) | |||
| 19行目: | 19行目: | ||
<br> | <br> | ||
また、<code>-f</code>オプションで変換手順を記載したスクリプトファイルを指定できる。その時、指定したファイルの内容に従って処理される。<br> | また、<code>-f</code>オプションで変換手順を記載したスクリプトファイルを指定できる。その時、指定したファイルの内容に従って処理される。<br> | ||
<br><br> | |||
== sedのインストール == | |||
==== パッケージ管理システムからインストール ==== | |||
多くのLinuxディストリビューションでは、最小インストールでsedがインストールされている。<br> | |||
もし、何らかの理由でインストールされていない場合は、パッケージ管理システムからsedインストールすることができる。<br> | |||
sudo zypper install sed | |||
<br> | |||
==== ソースコードからインストール ==== | |||
手動でsedをインストールする場合、ソースコードからsedをインストールする。<br> | |||
<br> | |||
[https://ftp.gnu.org/gnu/sed/ GNUソフトウェアの公式Webサイト]にアクセスして、sedのソースコードをダウンロードする。<br> | |||
ダウンロードしたファイルを解凍する。<br> | |||
tar xf sed-<バージョン>.tar.xz | |||
cd sed-<バージョン> | |||
<br> | |||
sedをビルドおよびインストールする。<br> | |||
mkdir build && cd build | |||
../configure --prefix=<sedのインストールディレクトリ> | |||
make -j $(nproc) | |||
make install | |||
<br> | |||
~/.profileファイル等に、環境変数<code>PATH</code>を追記する。<br> | |||
vi ~/.profile | |||
<br> | |||
<syntaxhighlight lang="sh"> | |||
# ~/.profileファイル | |||
export PATH="/<sedのインストールディレクトリ>/bin:$PATH" | |||
</syntaxhighlight> | |||
<br><br> | <br><br> | ||
| 25行目: | 56行目: | ||
<br> | <br> | ||
<center> | <center> | ||
{| class="wikitable" | {| class="wikitable" | style="background-color:#fefefe;" | ||
|- | |- | ||
! オプション ! | ! style="text-align: center;background-color:#66CCFF;" | オプション | ||
! style="text-align: center;background-color:#66CCFF;" | 説明 | |||
|- | |- | ||
| -e <スクリプト名> || 指定したスクリプト(条件式)で変換処理を行う。 | | -e <スクリプト名> || 指定したスクリプト(条件式)で変換処理を行う。 | ||
| 54行目: | 86行目: | ||
== sedコマンドの条件式 == | == sedコマンドの条件式 == | ||
<center> | <center> | ||
{| class="wikitable" | {| class="wikitable" | style="background-color:#fefefe;" | ||
|- | |- | ||
! 条件式 ! | ! style="text-align: center;background-color:#66CCFF;" | 条件式 | ||
! style="text-align: center;background-color:#66CCFF;" | 説明 | |||
|- | |- | ||
| 行数 || 処理する行数を指定する | | 行数 || 処理する行数を指定する | ||
| 115行目: | 148行目: | ||
|} | |} | ||
</center> | </center> | ||
<br><br> | |||
== デリミタ == | |||
sedコマンドには、置換のデリミタ (区切り文字) が複数存在する。<br> | |||
機能的には同じ結果をもたらす。<br> | |||
<br> | |||
デリミタとしては他にも <code>:</code>、<code>@</code>、<code>#</code>などの文字を使用することができる。<br> | |||
<br> | |||
# <code>/</code>を区切り文字として扱う場合 | |||
sed -i "s/<lastmod>.*</lastmod>/<lastmod>${current_date}</lastmod>/g" hoge.xml | |||
# <code>|</code>を区切り文字として扱う場合 | |||
sed -i "s|<lastmod>.*</lastmod>|<lastmod>${current_date}</lastmod>|g" hoge.xml | |||
<br> | |||
これらの違いが重要になる理由を以下に示す。<br> | |||
* 可読性 | |||
*: パスやURLを含む文字列を扱う場合、/を含むことが多いため、|を使用すると読みやすくなることがある。 | |||
* エスケープの必要性 | |||
*: /をデリミタとして使用する場合、置換対象やパターン内に/が含まれている時、それをエスケープする必要がある。 | |||
*: |を使用すると、/をエスケープする必要がない。 | |||
<br> | |||
上記では、XMLタグを扱っているため、どちらを使用しても問題ない。<br> | |||
しかし、より複雑なパターンや<u>/ (スラッシュ)</u> を含む文字列を扱う場合は、<u>| (バーティカルバー)</u> を使用する方が便利な場合がある。<br> | |||
<br><br> | <br><br> | ||
== 使用例 == | == 使用例 == | ||
テキストファイルの5~10行目を削除する。<br> | テキストファイルの5~10行目を削除する。<br> | ||
sed -e "5,10d" test.txt | sed -i -e "5,10d" test.txt | ||
<br> | <br> | ||
テキストファイル内の"Nikkei Linux"を"日経Linux"に変換する。<br> | テキストファイル内の"Nikkei Linux"を"日経Linux"に変換する。<br> | ||
sed -e "s/Nikkei Linux/日経Linux/g" test.txt | sed -i -e "s/Nikkei Linux/日経Linux/g" test.txt | ||
<br> | <br> | ||
"Error"という文字列がある行に対して、"### Check Line ###"という新しい行を追加する。<br> | "Error"という文字列がある行に対して、"### Check Line ###"という新しい行を追加する。<br> | ||
sed -e "/Error/i #### Check Line ###" test.txt | sed -i -e "/Error/i #### Check Line ###" test.txt | ||
<br> | |||
複数の命令を1度に実行する。<br> | |||
# "baseball"を"swimming"に置換した後、"rugby"を含む行を削除 | |||
sed -i -e 's/baseball/swimming/' -i -e '/rugby/d' test.txt | |||
<br> | |||
複数のファイルを一括置換する。<br> | |||
# 複数のファイル内の“apple”を“orange”に置換 | |||
sed -i 's/apple/orange/' test1.txt test2.txt test3.txt | |||
<br><br> | <br><br> | ||
| 530行目: | 594行目: | ||
111 ABC | 111 ABC | ||
<br><br> | <br><br> | ||
{{#seo: | |||
|title={{PAGENAME}} : Exploring Electronics and SUSE Linux | MochiuWiki | |||
|keywords=MochiuWiki,Mochiu,Wiki,Mochiu Wiki,Electric Circuit,Electric,pcb,Mathematics,AVR,TI,STMicro,AVR,ATmega,MSP430,STM,Arduino,Xilinx,FPGA,Verilog,HDL,PinePhone,Pine Phone,Raspberry,Raspberry Pi,C,C++,C#,Qt,Qml,MFC,Shell,Bash,Zsh,Fish,SUSE,SLE,Suse Enterprise,Suse Linux,openSUSE,open SUSE,Leap,Linux,uCLnux,Podman,電気回路,電子回路,基板,プリント基板 | |||
|description={{PAGENAME}} - 電子回路とSUSE Linuxに関する情報 | This page is {{PAGENAME}} in our wiki about electronic circuits and SUSE Linux | |||
|image=/resources/assets/MochiuLogo_Single_Blue.png | |||
}} | |||
__FORCETOC__ | __FORCETOC__ | ||
[[カテゴリ: | [[カテゴリ:RHEL]][[カテゴリ:SUSE]][[カテゴリ:Raspberry_Pi]][[カテゴリ:PinePhone]] | ||
[[カテゴリ:PinePhone]] | |||