Awk になれた方は、以下のようなことに、特に注意してください:
use English;としてロードすれば、awk でのようにして特殊変数を (
$RS
のように)
参照することができます。詳しくは、See section 定義済み変数,を参照してください。
if
や while
には、中括弧が必須です。
substr()
や index()
での文字
列中の位置も同様です。
split
は行なわれません。自分で
split
を行なって、明示的に配列に入れる必要があります。また、
split()
演算子は、引数が違います。
$0
ではなく、$_
に入れられています。一般に、
行末の改行文字は削除されていません。($0
は、実行されているプログ
ラムの名前です。)See section 定義済み変数,を参照してください。
$,
や $\
を設定しない限り、print()
文はフィールドセ
パレータやレコードセパレータを付与しません。`English' モジュールを
使えば、$OFS
や $ORS
を設定することができます。
print
するときには、前もって open
しなければな
りなせん。
..
です。コンマ演算子は、C と同じよう
に動作します。
=~
です。(~
はC と同じ
ように1の補数をとる演算子です。)
**
です。^
は C と同じく XOR
演算子です。(awk が基本的に C と互換性がないことにお気付きかもしれません
ね。)
.
です。(空文字列を使うと、
/par/ /pat/
が解析できなくなります。3番目のスラッシュが除算演算子
と解釈されるからです。Perl の字句解析部は、/
, ?
, >
のような演算子に対し、多少文脈依存となっています。実際、.
自身も、
数値の開始になることもあります。
next
、exit
、continue
の働きが異なります。
Awk Perl ARGC $#ARGV or scalar @ARGV ARGV[0] $0 FILENAME $ARGV FNR $. - something FS (whatever you like) NF $#Fld, or some such NR $. OFMT $# OFS $, ORS $\ RLENGTH length($&) RS $/ RSTART length($`) SUBSEP $;
$RS
にパターンを設定することはできず、文字列だけです。
Go to the first, previous, next, last section, table of contents.