2010年7月1日木曜日

print = ファイルなどに書き出す - AWK

AWKの入出力関数とコマンド実行機能
○Gawk on Windows ○Gawk ○mawk32 △(パイプ不可)Mawk ○awk
ファイルなどに書き出します。
o 最後に改行します。この動作を変更したい時は、変数ORSの値を変更します。

**** 書式
--------
print( [出力したい内容] ) [出力先]
--------

o 出力したい内容 -- 出力したい値などを並べます。
   + 省略すると、変数$0の値を出力します。
o 出力先 -- 指定すると、そのファイルに書き出します。
   + > ファイル名 (初めて使用する時は、ファイルを上書きします。)
   + >> ファイル名 (ファイルの後ろに追加します。)
   + | コマンド名 (コマンドに渡します。対応していない処理系有り)
   + |& インターネット接続用文字列
      + /inet から始まる文字列の形で指定します。
      + |& は、入出力が可能なパイプです。
      + 詳しい書き方は、「/inet = AWKからインターネットにアクセスする方法(Gawk専用)
   + (UNIX版では、「|& コマンド名」の形も使用出来るみたいです)
   + 出力先に標準エラーなどを指定したい時は、特殊なファイル名を使います
o print文の括弧は、基本的には省略可能なのですが、例外があるかもしれません。


**** 使用例
--------
BEGIN {
  print "ミクさん。葱は如何ですか。";

  print "リンさん。手袋は如何ですか。" > "out.txt";
  print "2.リンさん\n1.ミクさん" | "sort"; # 並び替えを行います。
}
--------

o 行末のセミコロンは、C言語の書き方に合わせました。無くても動きます。


**** 機能
o 並べた値を、標準出力に書き出します。
   + 出力先を指定している時は、指定した出力先だけに書き出します。
o カンマで区切った所は、カンマを変数OFSの値に置き換えて出力します。
   + 変数OFSの初期値は、半角空白1文字です。
o 最後に変数ORSの値を付加します。
   + 変数ORSの初期値は、改行文字("\n")です。

** 処理系に依存する動作
o Mawk for Windows 1.3.3
   + 「| コマンド名」の形式は非対応です。
o UNIX版特有の機能
   + UNIX版では、出力先に「 |& コマンド名」の書き方が使えるみたいです。


**** 確認した処理系
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 -- print系からのパイプは非対応
o original = the one true awk(updated May 1, 2007)


==
関連ページ:
    ▼AWKの入出力関数とコマンド実行機能▼ABC順
    ▼AWKプログラムを書く▼ABC順
    ▼AWK
    ▼制作メモ
    > printf = 文字列を組み立ててファイルなどに書き出す
    close = 開いたファイル(やパイプ)を閉じる
    fflush = 出力バッファーを空にする
    +
    文字列中で使用出来る特殊文字
    OFS = printを使って書き出す時の列区切り文字
    ORS = printを使って書き出す時の改行文字
    BINMODE = バイナリモードで読み書きする(mawk,Gawk専用)
(2010年10月7日追加。Gawkのインターネットアクセス)

HTML/JavaScriptガジェットで、手書きのリンクが上手く貼れない時の確認点 - Blogger

Bloggerブログのガジェットとサイドバー
HTML/JavaScriptガジェット内に貼ったリンクから、目的のページにアクセス出来ない時の確認点です。
リンクの指定を手書きや他からのコピーで行っている時は、次の条件に該当するかどうか確認すると、解決するかもしれません。

** 問題となる条件(= 2010年6月現在)
o href=の横に指定するアドレスを、「'」(= 一重の引用符)で括っている
   + 例。<a href='Sample.htm'>サンプル</a>
o かつ、指定するアドレスに、アルファベットの大文字が混じっている
o かつ、アルファベットの大文字にしないと、そのページにアクセス出来ない場合
   + 例。Bloggerでアルファベット半角大文字のラベルを付けた時、そのラベルへのリンク


**** 原因
編集後にガジェットを閉じる時、href=の横に指定するアドレスを「'」(= 一重の引用符)で括っていると、リンク内の大文字が小文字に自動変換されるみたいです。
殆どの場合はその方が都合が良いのですが、都合が悪い時もあります。


** 対策方法
o おすすめは、「"」(= 二重引用符)で書き直す方法です。
   + 変換された大文字部分を元に戻して、href=の横に指定するアドレスを、「"」(= 二重引用符)で括ります。

o どうしても「'」(= 一重の引用符)で括りたい方は、2通りの方法があります。
(1) 「HTMLの編集」機能を使って、テンプレートを直接編集する方法
(2) リンクのアドレス中に含まれているアルファベット大文字を、同じ意味の文字に置き換える方法
   + 「%に続けて、その文字のアスキーコードを入れる」方法です。
   + コード表はWeb検索。「アスキーコード 一覧」辺り。
   + 「B = 0x42」のような感じで書かれていますから、「0x」の部分を「%」に置き換えて使います。
   + 変換例「Blogger」=「%42logger」


**** メモ
o Bloggerに付いているリンクの入力機能を使う分には、この問題は起こりません。
o リンクのタグを全部手書きしたり、他で作ったHTMLをコピー&ペーストで貼り付ける時だけ、ご注意下さい。


==
関連ページ:
    ▼Bloggerブログのガジェットとサイドバー
    ▼Blogger
    ▼制作メモ
    > ▼ブログの本文を書く。ラベルと貼り付けとHTMLモード
    HTMLの編集やHTMLモードで入力する時に、変換が必要になる記号
    Bloggerのサイドバーに、ミク時計(Flashファイル)を置く
    ブログの本文にJavaScriptを書く

2010年6月30日水曜日

NF = 最後に読み込んだ行の列数 - AWK

AWKの入出力関数とコマンド実行機能
○Gawk on Windows ○Gawk ○mawk32 ○Mawk ○awk
最後に読み込んだ行の列数です。
o AWKは1行読み込むと、自動的に列に分割して、$1、$2、$3、、、に値を入れます。
o 行全体のデータは、$0に入っています。

**** 書式
--------
NF
--------

o NFは変数です。


**** 使用例
--------
{
  for (i = 1; i <= NF; ++i) {
    print $i "、おはようございます。";
  }
}
--------

o 行末のセミコロンは、C言語の書き方に合わせました。無くても動きます。

o 入力データ
--------
ミクさん リンちゃん レン君 ルカ様
--------



**** 機能
o 最後に読み込んだ行の列数です。
   + 列の区切り文字は、通常「半角空白、タブ(、改行文字)」ですが、FSで変更出来ます。
o この変数に値を代入すると、$0の値を自動変更(= 再構築)する処理系があります。
   + mawk, Gawkで列数を調整したい時に便利です。
o また、この変数に負の値にすると、強制終了する処理系があります。

o 次の操作は、NFの値を変更します。
   + 関数を呼び出さずに、1行読み込んだ時
   + getlineを、引数無しで呼び出した時
   + $0、$1など変数「$ + 数字」に値を代入した時
      + $0を更新した時は、自動的に$1などとNFが再設定されます。
      + $1など、数字が1以上の時は、その数字が NFよりも大きなときに限り、NFにその数字を設定します。
      + $1 = $1のように同じ値を代入しても、同じ動きをします。
   + NFの値を直接上書きした時


** 処理系に依存する動作
o この変数に値を代入した時、$0の値を自動変更(= 再構築)する処理系
   + Gawk on Windows 3.1.7
   + Gawk for Windows 3.1.6
   + mawk MBCS (32bit版) 1.3.3
   + Mawk for Windows 1.3.3
   + この時、各列の間にある区切り文字を、変数OFSの値で置き換えます。
   + NF = NFのように同じ値を代入しても、同じ動きをします。
   + これらの処理系では、NFを負の値にすると、強制終了します。
o この変数に値を代入した時、$0の値を変更しない処理系
   + original = the one true awk(updated May 1, 2007)
   + この処理系では、NFの値が負になっても、$0の値を参照する事が出来ます。


**** メモ
o 最後の列のデータを取り出す時は、$NF と書く方法が簡単です。


**** 確認した処理系
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)


==
関連ページ:
    ▼AWKの入出力関数とコマンド実行機能▼ABC順
    ▼AWKプログラムを書く▼ABC順
    ▼AWK
    ▼制作メモ
    > RT = 最後に読み込んだ行の改行文字
    FNR = 現在読み込み中のファイルから読み込んだ行数
    NR = これまでに読み込んだ行数
    +
    ファイルからデータを読み込む
    $0 = 最後に読み込んだデータ、1行分
    $1 = 最後に読み込んだデータの1列目
(2010年9月9日追加。$0や$1との関係と負の値)