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) ¦¹¤½¥Îµ{¦¡ªº¥Dn¥Î³~¬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«á¡An¥Hchmod +x¨Ó¨Ï¤§¥i¥H°õ¦æ¡A°õ¦æªº®ÄªG©M쥻ªºµ
{¦¡¤@¼Ë¡A¦ý¬O¦pªGÂà´«¥H«áªºperlµ{¦¡µLªk°õ¦æ¡A¨º¬O¦]¬°µ{¦¡Âà±o¤£°÷¦n¡A©Ò¥Hn¦Û¤wdebug¡C