uspTukubaiコマンドに関する様々な資料がここにあります。

 

 

魂内検索

DOCUMENTS

COMMAND

FORUM

UEC DOCS

VIDEO

 

ABC順リスト |  カテゴリ別リスト

(動画教材準備中)

sb_pipealign

<概要>

sb_pipealign : bashスクリプトのパイプ位置を揃える
       sb_pipealign=shellscript beautifier for pipe alignment

<書式>

Usage   : sb_pipealign < <shellscript>
Version : Mon Aug  8 13:28:44 JST 2016
          UTF-8

<説明>

標準入力からシェルスクリプトの全体あるいは一部を読み込み、パイプの位置を揃えます。パイプの位置は、自動で設定されます。

<例1>

次のようなスクリプトを読み込ませます。

----------------------------------------------------
[usp@commands64 BIN]$ cat exp1.sh
#!/bin/bash

seq 1 5                 |\
awk '{print $1,$1*$1}'         |
awk '{print $1,$2, $2*$1}'      |
cat > hoge

----------------------------------------------------
[usp@commands64 BIN]$ cat exp1.sh | sb_pipealign
#!/bin/bash

seq 1 5                        |\
awk '{print $1,$1*$1}'         |\
awk '{print $1,$2, $2*$1}'     |\
cat > hoge

----------------------------------------------------

最初のパイプのあと、エスケープの記号「\」が記述されていると、以降のパイプの後ろにもエスケープがつきます。

<例2>

vimから呼び出すことができます。

スクリプト全体を整形するときはvimの画面で以下のように打ちます。
----------------------------------------------
|#!/bin/bash
|
|seq 1 5                 |
|awk '{print $1,$1*$1}'         |
|awk '{print $1,$2, $2*$1}'      |
|cat > hoge
|
------------------------------------------------

行指定で整形することもできます。vimの画面で以下のように打ちます。
----------------------------------------------
|#!/bin/bash
|
|seq 1 5                 |
|awk '{print $1,$1*$1}'         |
|awk '{print $1,$2, $2*$1}'      |
|cat > hoge
|
|:3,5! sb_pipealign
------------------------------------------------

<例3>

パイプのない行(awkの折り返しやコメント、その他パイプのない行)は無視されます。

----------------------------------------------------
[usp@commands64 BIN]$ cat exp2.sh
#!/bin/bash

seq 1 5                 |
#1:数字
awk '{print $1,$1*$1}'         |
#1:数字 2:第一フィールドの二乗
awk '{print $1,$2,\
        $2*$1}' |
#1:数字 2:第一フィールドの二乗 3:第一フィールドの三乗
cat > hoge

----------------------------------------------------
[hoge@hoge ~]$ cat ./exp2.sh | sb_pipealign
#!/bin/bash

seq 1 5                    |
#1:数字
awk '{print $1,$1*$1}'     |
#1:数字 2:第一フィールドの二乗
awk '{print $1,$2,\
        $2*$1}'            |
#1:数字 2:第一フィールドの二乗 3:第一フィールドの三乗
cat > hoge

----------------------------------------------------

<例4>

awkに限らず、オプションが折り返されている場合にも対応しています。ヒアドキュメントにも対応しています。


----------------------------------------------------
[usp@commands64 BIN]$ cat exp3.sh
#!/bin/bash

echo 'We   |
are                    |
pipes |
.'         |
yarr            |
#上の二行だけ、本物のパイプ
cat

cat << FIN
here     |
document  |
FIN
----------------------------------------------------

本物のパイプだけ揃います。
[usp@commands64 BIN]$ cat exp3.sh | sb_pipealign
#!/bin/bash

echo 'We   |
are                    |
pipes |
.'       |
yarr     |
#上の二行だけ、本物のパイプ
cat

cat << FIN
here     |
document  |
FIN
----------------------------------------------------

<バグ>

構文解析を完璧にしているわけではないので、不具合が出ることがあります。
コマンドへのオプションをタブ区切りで指定しているとパイプが揃わないことがあります。

viから呼び出した場合は、エラーのトレース情報でスクリプトが上書きされることがあります。そのような場合はundoしてください。