このページの内容

7.2 行の中央揃え

このスクリプトは、ファイルのすべての行を幅80桁の中央に揃えます。幅を変えるには、\{…\}にある数値を置き換え、追加する空白の数も変更する必要があります。

照合する正規表現の各部分を分けるために、バッファーを扱うコマンドをどう使っているかに注目してください。これはよく使われる手法です。

#!/usr/bin/sed -f

# Put 80 spaces in the buffer
1 {
  x
  s/^$/          /
  s/^.*$/&&&&&&&&/
  x
}
コード内の説明(日本語訳)

バッファーに80個のスペースを入れます。



# delete leading and trailing spaces
y/TAB/ /
s/^ *//
s/ *$//
コード内の説明(日本語訳)

先頭と末尾のスペースを削除します。



# add a newline and 80 spaces to end of line
G
コード内の説明(日本語訳)

行末に改行と80個のスペースを追加します。



# keep first 81 chars (80 + a newline)
s/^\(.\{81\}\).*$/\1/
コード内の説明(日本語訳)

先頭の81文字(80文字と改行)を残します。



# \2 matches half of the spaces, which are moved to the beginning
s/^\(.*\)\n\(.*\)\2/\2\1/
コード内の説明(日本語訳)

\2はスペースの半分にマッチし、それらのスペースを先頭へ移動します。