[A-00052]Shellでファイルの中身の特定範囲を抜き出す
シェルスクリプトを使用してファイルの中身の特定範囲を抜き出す方法を記載しておく。
例えば下記のような文章があるとする。この中のTOPIC~ENDまでを抜き出したい場合を考える。
2023年6月29日 日曜日
晴れの日が気持ち良い
今日はのんびり家で過ごす。
買い物にも行かない。
TOPIC
宝くじが当たって30万円をゲットした。
とてもラッキーだ。
星座占いは最下位だった。
星座占いはあてにならない。
END
昼寝をしよう。
自分のストレス解消方法は寝る事だ。
cat ./sample.txt | awk '/TOPIC/,/END/'
anonymous-MacBook-Pro:test$ cat ./sample.txt | awk '/TOPIC/,/END/'
TOPIC
宝くじが当たって30万円をゲットした。
とてもラッキーだ。
星座占いは最下位だった。
星座占いはあてにならない。
END
SQLの特定範囲を抜き出す
応用例としてSQLの特定範囲を抜き出したいときに使用してみる。
例えばGROUP BY以下の行を全て抜き出したいとなった場合での応用例を考える。
SELECT
count(1) as cnt,
no,
name
FROM
(
SELECT
no,
name
FROM
TABLE_A
) as ta
GROUP BY
no,
name
ORDER BY
no
GROUP BY以下の全行抽出したいので正規表現に[$]を用いて何が来てもマッチするようにしている。バックスラッシュで予約語としての機能を打ち消している。
cat ./sample.sql | awk '/GROUP/,/\$/'
anonymous-MacBook-Pro:test$ cat ./sample.sql | awk '/GROUP/,/\$/'
GROUP BY
no,
name
ORDER BY
no
コメントを残す