2015-04-17

zshで「空白行を除去」をする方法

• 状況

テキストから「空白行の除去」が必要になったので、bashの時から使ってきた「sed ’s/^$//g’」を適用したが、上手くいかない;
  • エラーは出ないが、
  • 入力ファイルがそのままでてきてしまう。

私は「grep」コマンドに親しんでいるので、「grep」で工夫をしてみた;


• ターミナルでのトライ状況






















• 結論

「空白行の除去」には「grep -v ‘^$’」を使うことにしよう。


• 感想

そろそろ、zsh特有の「=~」に挑戦するかなぁ。


•展開

どうせ使うなら、Zshらしい使い方が無いかと思って検索した。その結果、コメントに記入した2つの参考資料に従って、ダイレクトな正規表現を使えた。

#!/bin/zsh

# d0l: Delete blank(0) Line from file.
#
# References:
#    1) "From Bash to Z Shell", Oliver Kiddle et.al., Chapter 13, p331-2.
#    2) "試験運用中なLinux備忘録: ファイルの内容を1行ずつ処理"
#        http://d.hatena.ne.jp/kakurasan/20100112/p1
#
# Usage: d0l «file name»
#
# 2015-04-18(土) 14:21:07 by mNeji
#

file="$1"

cat "$file" | \
while read line; do
    [[ "$line" =~ '^$' ]] && : || echo "$line"
done
簡単な処理なら、「grep」「sed」「awk」の様な難しい文法を利用しないでも、何とかなりそうだ。

____
このページの履歴
  1. 開始 2015-04-17(金) 22:46:21  
  2. 追加 2015-04-18(土) 16:58:16 展開

0 件のコメント:

コメントを投稿

注目の投稿

Terminalでの、なんちゃってViモドキ

近頃、ようやくKarabiner-Elementsに慣れてきたので、 Terminalで動作する「擬似Vi-Mode」を作って見たので、ご紹介します。 『概要』 「擬似Vi-Mode」の所以は、方向キー「←↓↑→」を通常の「hjkl」ではなくて「jkil」としました。これ...