もくてき

テキストファイルを空行区切りで取り出す。 今回僕が触ってた対象はバックアップしたLINEの履歴です。

やりかた

思いついたのは空行間を一列にして改行区切りで取り出す方法

  1. 空行を目印となる文字に置き換える(今回は等号)
  2. 同様に改行を別の文字に置き換える
  3. 空行を改行に戻す
  4. IFSを設定した上でforとかで取り出す
msg="$(cat xxx.txt | sed -e 's/^$/=/g' | sed -r -e 's/=+/=/g' | tr '\n' '@' | tr '=' '\n')"

IFS='
'
for i in $msg;
do
  echo "$i" | tr '@' '\n'
done;

おまけ

awkでやるときは区切り文字とかを設定してレコード番号から絞るらしい。 awk自体に制御構文はあるわけだし明らかに賢い (フィールド番号指定してできねーなって言ってた)。

あとタイトルのわりにBashである必要はない。