このスクリプトは、ファイルのすべての行を幅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はスペースの半分にマッチし、それらのスペースを先頭へ移動します。