a2p - Awk to Perl translator

(a) a2p³o¤@­Óµ{¦¡¬O¦b/usr/bin/a2p¡A§Ú©Ò¨Ï¥Îªº¦Í²Î¬Olinux redhat 7.0¤¤¤åª©

(b)  shared library ==>  libnsl.so.1 => /lib/libnsl.so.1 (0x40025000)
                         libdl.so.2 => /lib/libdl.so.2 (0x4003c000)
                                 libm.so.6 => /lib/libm.so.6 (0x4003f000)
                                 libc.so.6 => /lib/libc.so.6 (0x4005e000)
                                 libcrypt.so.1 => /lib/libcrypt.so.1 (0x40181000)
                         /lib/ld-linux.so.2 => /lib/ld-linux.so.2 (0x40000000)

(c) ¦¹¤½¥Îµ{¦¡ªº¥D­n¥Î³~¬O§âawk»y¨¥Âনperl»y¨¥¨Ó°õ¦æ¡C¥ÑawkÂà¨Óªºperlµ {¦¡¡A¥\¯à·|©M­ìµ{¦¡¤@¼Ë¡A¦Ó¥B¤] ¨S¦³awkªº¦UºØ­­¨î¡A¹³°Ñ¼Æªø«×¤°»òªº¡C¦b·¥¤Ö¼Æ±¡ªp¤U¡AÂà´««áªºµ{¦¡·|¤ñ¸ûºC;¦pªG­ìµ {¦¡¼gªº«Ü®t¡AÂà´«µ{¦¡¥i¯àµLªk¥Î³Ì¦³®Ä²vªºperl±Ô­z°µ¨ì­ì¨Ó­n°µªº¨Æ¡C§A¥i¥H¿Ë¦Û­× §ïÂà´««áªºperlµ{¦¡¡A´£°ª°õ¦æ®Ä²v¡A©Î¥[¤J·sªº¥\¯à¡C

(d) °Ñ¼Æªº¥\¥Î¤Î¨ä·N¸q
¥Îªk : a2p [options] filename

-D¡@¡@
³]¥ß°£¦äºX¼m

¡@¡@ -F

§i¶Da2p»¡³o¤@­Óawk script¬O±`©M -F switchÃö³s

-n

¦pªG¿é¤J¤£¯à¤À³Î¦¨°}¦C¡A§Ú­Ì¥i¥H¥Î³o­Ó°Ñ¼Æ¨Ó°Ï¤À¥¦¡C
¡@¡@¡@
-

³o­Ó°Ñ¼Æ·|¨Ïa2p°²³]¿é¤J¦³number­Ófields.¡@

-o
§i¶Da2p¥Îª©ªºawk¯S¼x¡C



(e)¡@°Ñ¼Æªºµ{¦¡­S¨Ò

(1) ¡Vn

¦p¡G§Ú­Ì·Q§â¤@­Ó·|³B²zpassword fileªºawk script¡A§Ú­Ì´N¥²¶·³o¼Ë¤l¿é¤J¡G

  a2p -7 -nlogin.password.uid.gid.gcos.shell.home

¥ô¦óªº©w¸q²Å¸¹³£¥i¥H®³¨Ó¤À³Î¥L­Ì¡C

(2) - o

ª©»P·sª©ªº®t§O¦³¡Gª©ªºawk¦³½u©Ê°j°éline loop)¡A·sª©ªº´N¨S¦³¡C¦bª©ªºawk¡Asprintf¹ï¥¦ªº°Ñ¼Æ¬O«D±`°§´÷ªº¡C¨Ò¡Gprint sprintf(some_args), extra_args;ª©ªºawk·|§âextra_args·í¦¨sprintfªº°Ñ¼Æ¡F·sª©ªº´N§â¥L­Ì·í¦¨printªº°Ñ¼Æ¡C

(f) ¨ä¥L

°²³]¦³¤@awkµ{¦¡ÀɦW¬°a¡A¨ä¤º®e¬°:

###################################################################
# ¡@¡@{for(x=3;x<=NF;x++) #
# if($x<0){print"bottomed out!";break} #
# ¡@¡@} #
#¡@¡@ ¡@¡@#{for (x=3;x<=NF;x++) #
#¡@¡@¡@¡@¡@¡@#if($x==0){print"Get next item",continue} #
###################################################################¡@¡@¡@
¡@¡@¡@²{§Ú¦b©R¦C¿é¤J¡@a2p a¡@¡A¹L«á´N¥i¥H¬Ý¨ì¤º®e¦p¤U¡G
¡@¡@¡@
#####################################################################
# #!/usr/bin/perl #
# eval 'exec /usr/bin/perl -S $0 ${1+"$@"}' #
# if $running_under_some_shell; #
# # this emulates #! processing on NIH machines. #
# # (remove #! line above if indigestible) #
# #
# eval '$'.$1.'$2;' while $ARGV[0] =~ /^([A-Za-z_0-9]+=)(.*)/ && shift; #
# # process any FOO=bar switches #
# #
# $[ = 1; # set array base to 1 #
# $, = ' '; # set output field separator #
# $\ = "\n"; # set output record separator #
# #
# while (<>) { #
# chomp; # strip record separator #
# @Fld = split(' ', $_, 9999); #
# ¡@¡@ for ($X = 3; $X <= $#Fld; $X++) { #
# If ($Fld[$X] < 0) { #
# print 'bottomed out!'; #
# last; #
# } #
# } #
# #
# #{for (x=3;x<=NF;x++) #
# # if($x==0){print"Get next item",continue} #
# } #
#####################################################################
¥Ñ¦¹¥i¥H¬Ý¥X¡Aµ{¦¡¤w³QÂনperlµ{¦¡»y¨¥¤F¡C
Âনperl»y¨¥Àx¦s¥H«á¡A­n¥Hchmod +x¨Ó¨Ï¤§¥i¥H°õ¦æ¡A°õ¦æªº®ÄªG©M­ì¥»ªºµ {¦¡¤@¼Ë¡A¦ý¬O¦pªGÂà´«¥H«áªºperlµ{¦¡µLªk°õ¦æ¡A¨º¬O¦]¬°µ{¦¡Âà±o¤£°÷¦n¡A©Ò¥H­n¦Û¤wdebug¡C