RS = 1行読み込む時の改行文字 - AWK
○Gawk on Windows ○Gawk ○mawk32 ○Mawk ○(1文字のみ)awk
ファイル(やパイプ)から1行読み込む時の、改行文字です。**** 書式
--------
RS
もしくは
RS = "改行文字"
--------
o RSは変数です。初期値は改行文字("\n")。
o 改行文字 -- 正規表現です。前後の「/」は付けず、文字列の形で指定します。例 = "[\r\n]+" (空行を読み飛ばす書き方)
**** 使用例
--------
BEGIN {
RS = "+";
}
{
# 例えば、入力ファイルが「ミクさん+リンちゃん+レン君+ルカ様」の時
print $0 ; # 最初の行は「ミクさん」
}
--------
o 行末のセミコロンは、C言語の書き方に合わせました。無くても動きます。
**** 機能
o ファイル(やパイプ)から1行読み込む時の、改行文字です。
o 初期値は改行文字("\n")です。
o 1文字だけ指定した時、全ての処理系で同じように動きます。
+ その動きは、正規表現に例えると、[]で括った時と同じです。
+ RS = "a"; の指定は、RS = "[a]"; と同じです。
+ RS = "\t"; の指定は、RS = "[\t]"; と同じです。\tはタブ文字1文字の意味です。
+ RS = " "; の指定は、RS = "[ ]"; と同じです。FSの時とは違います。
+ RS = ""; (= 空文字)の指定は、RS = "[\n][\n]"; と同じです。改行文字が2つ並ぶまでを1行とします。
+ 改行2つは、インターネットの通信で良く使われている記号です。
** 処理系に依存する動作
o mawk系、Gawk系の場合
+ 文字列の形ですが、中身は「/」無しの正規表現で指定します。
+ 2文字以上指定する事が出来ます。
o original = the one true awk(updated May 1, 2007)の場合
+ 常に、先頭の1字のみで判断します。
+ RS = "[\t];" と指定すると、先頭の「[」を行の区切り文字だと判断します。
**** メモ
o RS の値変更機能は、XMLや JavaScriptを扱う時に重宝しています。
o バックアップXMLや強力なJavaScriptライブラリは、処理の単純化やファイルサイズ縮小などの目的で、改行コードを必要最小限に抑えたり除去する事が良くあります。
o それらのデータを解析したり加工したい時、そのままの状態で開いても読み難いです。
o そこで、RSで行区切り文字(例えば、RS = ">")を設定して改行コードを加えると、読み易い形式に変換する事が出来ます。データ加工でタグを切り出す時にも、便利です。
o 具体例は「Bloggerのエクスポートファイルからテンプレートを取り出す方法」
**** 確認した処理系
o Gawk on Windows 3.1.7
o Gawk for Windows 3.1.6
o mawk MBCS (32bit版) 1.3.3
o Mawk for Windows 1.3.3
o original = the one true awk(updated May 1, 2007) -- 最初の1文字のみ有効
==
関連ページ:
▼AWKの入出力関数とコマンド実行機能(▼ABC順)
▼AWKプログラムを書く(▼ABC順)
▼AWK
▼制作メモ
> FILENAME = 現在読み込み中ファイルの名前
ARGV = AWK起動時に指定した入力ファイル名とコマンド名
OFS = printを使って書き出す時の列区切り文字
+
getline = ファイル(やパイプ)から1行読み込む
FS = 入力行を列に分割する時の区切り文字
RT = 最後に読み込んだ行の改行文字(Gawk専用)
FIELDWIDTHS = 固定長ファイルを読み込む為の設定(Gawk専用)
ORS = printを使って書き出す時の改行文字
(2010年9月29日追加。メモ欄にてRSの便利な使い方)
(2010年9月7日変更。\n指定時の動作が間違っていたので削除。空文字指定時の動作を追加。)