最終更新日: 2026-08-29
TOP(About this memo)) > 一覧(Linux) > テキスト処理(sed・awk・jq)
curl の出力をパイプする用途などで便利。echo '{"errors":[{"message":"The user credentials were incorrect.","extensions":{"category":"authentication"},"locations":[{"line":2,"column":3}],"path":["login"]}]}' | jq
cat response.json | jq '.errors[0].message'
-r(GNU sedでは -E も同義) スクリプトで拡張正規表現を使用する
-r が使えず -E を使う。両対応させたい場合は -E の方が無難。-n 出力コマンド以外の出力を行わない(デフォルトでは、処理しなかった行はそのまま出力される)-i ファイルを直接上書きする
sed -i 's/aaa/AAA/' test.txt、BSD系は sed -i '' 's/aaa/AAA/' test.txt のように空文字のバックアップ拡張子が必要で、書き方が異なる点に注意。sed -e 置換コマンド 入力ファイル
-e は省略できる。ただし省略した場合、sedの第一引数がコマンド、第二引数以降が入力ファイルと解釈される。aaa を AAA に置換する
sed 's/aaa/AAA/g' test.txt
s は substitute(置換)コマンドを意味する。g は、マッチした文字列を全て置換することを意味する。g がなくても全行に対して置換は実行されるが、1行に2つ以上マッチした場合は1つ目しか置換されない。sed '3,5s/abc/ABC/g' test.txt … 3行目から5行目のみを置換の対象とするsed '3s/abc/ABC/g' test.txt … 3行目のみを置換の対象とするsed -i 's/aaa/AAA/' test.txt& で参照できる
ls | sed -E "s/(.*)\.jpg$/& \1.jpeg/"
test.jpg に対して test.jpg test.jpeg のような出力になる。$PATH を見やすく分割する
echo $PATH | sed -e 's/:/\n/g'echo "$INFO" | sed -n 6p | sed -E 's/^.*ID: (.*)$/CLIENT_ID=\1/' >> .env
echo "$INFO" | sed -n 7p | sed -E 's/^.*secret: (.*)$/CLIENT_SECRET=\1/' >> .env
*? のような最短一致の指定がない。最短一致が必要な場合はperlやawk、あるいは対象を絞る書き方に置き換える。sed '3,5d' test.txt … 3〜5行目を削除sed 's/ //g' test.txt … 空白を削除sed '/^$/d' test.txt … 空行を削除sed '/^#/d' source.txt … # で始まるコメント行を削除cat source.txt | grep -v '^#' | sed '/^$/d' … 先頭 # の行と空行を削除sed '3i aaaaaaaaa' test.txt … 3行目の前に挿入sed '3a aaaaaaaaa\nbbbbbbbbb' test.txt … 3行目の後に追加ls | sed -En "s/(.*)\.jpg$/mv & \1.jpeg/p"| sh に渡す、という使い方ができる。pattern { action } を実行する。この基本形さえ押さえれば大きく間違えない。ps aux | awk '{print $2}'
ps alx | awk '{printf ("%d\t%s\n", $8, $13)}' | sort -nr | head -10