📢 Webサイト閉鎖と移転のお知らせ
このWebサイトは2026年9月に閉鎖いたします。
新しい記事は移転先で追加しております。(旧サイトでは記事を追加しておりません)

383行目: 383行目:
sedコマンドの置換対象の文字列の入力において、[Ctrl] + [V]、[Ctrl] + [M]と入力する。<br>
sedコマンドの置換対象の文字列の入力において、[Ctrl] + [V]、[Ctrl] + [M]と入力する。<br>
  sed -e 's/^M//g' CRLF.txt > LF.txt  # "^"は制御文字であるため、エスケープは不要
  sed -e 's/^M//g' CRLF.txt > LF.txt  # "^"は制御文字であるため、エスケープは不要
<br>
==== 変数を使用した文字列置換 ====
置換パターンの指定には、変数の値を使用することができる。<br>
sed -e "s/${変数名}/置換後パターン/"
sed -e "s/置換対象パターン/${変数名}/"
sed -e "s/$VAR1/$VAR2/"
<br>
VAR="hoge"
echo "hoge piyo fuga" | sed -e "s/${VAR}/foo/"  # 変数VARの値(hoge)をfooに置換
foo piyo fuga
echo "hoge piyo fuga" | sed -e "s/fuga/$VAR/"  #↑変数VARの値(hoge)が置換パターンに使用される
hoge piyo hoge
<br>
==== 行を指定した置換 ====
sedコマンドは、行番号を指定することにより、限定された範囲内でのみ処理を行うことができる。<br>
# 特定の1行のみで置換を行う
sed -e '<行番号>s/パターン1/パターン2/'
# 開始行~終了行の範囲でのみ置換を行う
# sの直前に対象とする行番号を指定する
sed -e '<開始行>,<終了行>s/パターン1/パターン2/'
<br>
ある特定の行のみを置換対象とする場合、または、N行目〜M行目のみを置換対象とする場合は、<br>
対象とする行の行番号を指定することで、処理が適用される範囲を限定することができる。<br>
<br>
以下の例では、テキストファイルに対して、置換処理を行っている。<br>
cat Sample.txt
111 ABC
222 ABC
333 ABC
<br>
2行目のみを処理対象とする。<br>
sed -e '5s/ABC/OK/' Sample.txt
111 ABC
222 OK
333 ABC
<br>
2~3行目のみを処理対象とする。<br>
sed -e '2,3s/ABC/OK/' Sample.txt
111 ABC
222 OK
333 OK
<br>
==== 特定の行を削除する ====
特定の文字列を含む行を削除するには、<code>d</code>を指定する。<br>
<br>
N行目またはN行目~M行目を削除する場合、削除対象となる行のパターンと<code>d</code>を指定することで、そのパターンを含む行を削除できる。<br>
この処理は、置換ではなく削除であるため、置換後のパターンを指定する必要はない。<br>
sed -e '/パターン/d'
<br>
以下の例では、テキストファイルに対して削除処理を行っている。<br>
cat Sample.txt
111 ABC
222 ABC
333 ABC
<br>
333を含む行を削除する。<br>
sed -e '/333/d' Sample.txt
111 ABC
222 ABC
<br>
上記は、<code>grep -v</code>コマンドでも同様の処理ができる。<br>
grep -v "333" Sample.txt
111 ABC
222 ABC
<br>
空行を削除する。
空行は、行頭と行末の間に何も存在しない行であるため、正規表現の<code>^$</code>で表すことができる。<br>
これを置換対象パターンに指定することで、空行を削除することができる。<br>
cat Sample.txt
111 ABC
222 ABC
<br>
sed -e '/^$/d' Sample.txt
111 ABC
222 ABC
<br>
行中に含まれる置換パターンに関係なくN行目を削除するには、置換パターンを指定せずに<code>d</code>に行番号のみを指定する。<br>
# 単一行の削除
sed -e '<行番号>d'
# 複数行の削除
sed -e '<開始行>,<終了行>d'
<br>
cat Sample.txt
111 ABC
222 ABC
333 ABC
<br>
sed -e '3d' Sample.txt
 
111 ABC
222 ABC
<br>
sed -e '2,3d' Sample.txt
111 ABC
<br>
最下行を削除するには、最下行を表す<code>$</code>を行番号の代わりに指定する。<br>
cat Sample.txt
111 ABC
222 ABC
333 ABC
<br>
sed -e '$d' Sample.txt
111 ABC
222 ABC
<br>
==== 特定の行のみを表示する ====
N行目またはN~M行目のみを表示するには、<code>-n</code>オプション、行番号、<code>p</code>を指定する。<br>
# N行目を表示
sed -n '<行番号>p'
# N行目~M行目を表示
sed -n '<開始行>,<終了行>p'
<br>
1行目のみを表示する。<br>
cat Sample.txt
111 ABC
222 ABC
333 ABC
<br>
1行目のみを表示する。<br>
sed -n '1p' Sample.txt
111 ABC
<br>
2~3行目のみを表示する。<br>
sed -n '2,3p' Sample.txt
111 ABC
<br><br>
<br><br>


__FORCETOC__
__FORCETOC__
[[カテゴリ:CentOS]][[カテゴリ:SUSE]][[カテゴリ:Raspberry_Pi]]
[[カテゴリ:CentOS]][[カテゴリ:SUSE]][[カテゴリ:Raspberry_Pi]]