1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

bashでsed の変換対象文字としてタブを指定する方法(小ネタ・読了に要する時間:推定30秒)

Posted at

※自分の備忘のための記事ですがシェアします。

この記事を書いたきっかけ

以下は、入門UNIXシェルプログラミング のP.174からの引用

何も書かれていない行を削除するには次のようにします。

 sed -e '/^$/d'

行頭(^)と行末($)の間に何も文字がない行を削除しています。
ただし、この場合スペースやタブだけの行は削除できません。そんなスペースやタブだけの行も含めた空白行を削除したければ、以下のように書きます。

sed -e '/^[<space><tab>]*$/d'

 上記の記述で、<space>や<tab>は、実際にはスペースキーやタブキーを押すことを意図している。
 それで、このスペースやタブだけを0個以上含む行を削除する sed を試そうとしたが、bash ではコマンドラインでタブを入れるとファイル名の補完に捕捉されて入力できない。

解決策

 やや苦肉の策ですが、シェル変数にタブを代入して、この変数をsedの編集コマンドに使うことで期待する動作になりました。
 以下で、$ はbashのプロンプト、ab.txt の2行目は実際には、スペースとタブを適当に何個か入れてあります。

$ cat ab.txt
aaa
    			  	 	
bbb
$ TAB=`echo -n -e '\t'`
$ sed -e "/^[ $TAB]*\$/d" ab.txt
aaa
bbb
$
1
0
4

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?