Sponsored Content
Top Forums Shell Programming and Scripting Print array into a single file - AWK Post 302724297 by Corona688 on Wednesday 31st of October 2012 01:07:05 PM
Old 10-31-2012
NR and FNR are special variables in awk. NR means the total number of records processed, FNR is the number of records read from the current file. When they are identical, that means you are in the very first file and nowhere else.

I use that to load the list of stuff to translate into awk, stuffing it into an array like T["AAA"]="-10" Then the 'next' tells it to skip to the next line, preventing it from running any of the code below.

For all the other files, it checks if the array T has anything with an index identical to column 8. $8 in T ...and if it does, it just overwrites column 8 with the contents of the array. $8=T[$8]

Then it prints the entire line to the file FILENAME ".aaa". FILENAME is a special variable which names the current file. Putting two strings together like this concatenates them. So if the current file is file1, it will write to "file1.aaa".
This User Gave Thanks to Corona688 For This Post:
 

10 More Discussions You Might Find Interesting

1. UNIX for Dummies Questions & Answers

awk to print ' (single quotes)

I'm building a file with sql delete statements. I need to print the single quotes for the where clause. i.e. delete from Command where CommandName = 'SomeName'; I have the following in my script input=$(pwd)/Cmnd.csv i=0 while read line do if test $i -ge 1; then ... (2 Replies)
Discussion started by: orahi001
2 Replies

2. Shell Programming and Scripting

Accessing single elements of a awk array in END

How do I access one of the indices in array tst with the code below? tst=sprintf("%5.2f",Car / 12) When I scan thru the array with for ( i in tst ) { print i,tst } I get the output of: vec-7 144 But when I try this in the END print tst It looks like it's not set. What am... (6 Replies)
Discussion started by: timj123
6 Replies

3. UNIX for Dummies Questions & Answers

how to print single quote in awk

Hi all, It is a very stupid problem but I am not able to find a solution to it. I am using awk to get a column from a file and I want to get the output field in between single quotes. For example, Input.txt 123 abc 321 ddff 433 dfg ........ I want output file to be as ... (6 Replies)
Discussion started by: gauravgoel
6 Replies

4. Shell Programming and Scripting

want to print single quote using awk

i want to print ' symbol using awk i tried: awk '{print " ' "}' awk '{print "\' "}' both not work please help me. (2 Replies)
Discussion started by: RahulJoshi
2 Replies

5. Shell Programming and Scripting

Awk problem: How to express the single quote(') by using awk print function

Actually I got a list of file end with *.txt I want to use the same command apply to all the *.txt Thus I try to find out the fastest way to write those same command in a script and then want to let them run automatics. For example: I got the file below: file1.txt file2.txt file3.txt... (4 Replies)
Discussion started by: patrick87
4 Replies

6. Shell Programming and Scripting

URGENT! single apex in awk print

cat a | awk -F";" '{print "update db set column=' "$2" ' where column1=\""$1"\";"}' > ip-add.sql Hi! I'm a new user! i've an urgent help on the single apex use in the double apex print string The apex between che "$2" should not be interpreted, but....how?! I'm trying to use \ but don't work... (1 Reply)
Discussion started by: Re DeL SiLeNziO
1 Replies

7. Shell Programming and Scripting

BASH: print matrix from single array

I am creating a report in groff and need to format data from a file into a table cell. Sample data: dador,173323,bpt,jsp,39030013338878,1 dador,173323,brew,jsp,39030013338860,1 dador,173323,brew,jsp,39030013339447,1 dador,173323,brew,jsp,39030013339538,1 I would like to build a table... (12 Replies)
Discussion started by: Bubnoff
12 Replies

8. Shell Programming and Scripting

How do you print a single quote character in AWK

How do you print out a single quote character in AWK? Using the escape character does not seem to work. {printf "%1$s %2$s%3$s%2$s\n" , "INCLUDE", " \' ", "THIS" } does not work. Any suggestions? (6 Replies)
Discussion started by: cold_Que
6 Replies

9. Shell Programming and Scripting

Perl question - How do I print contents of an array on a single line?

I have the following code: print @testarray; which returns: 8 8 8 9 How do I return the array like this: The output is: 8, 8, 8, 9 (5 Replies)
Discussion started by: streetfighter2
5 Replies

10. Shell Programming and Scripting

Not getting array in .awk file and print it

I have test.sh file as below : set -A IDARR $ID echo | awk -f test.awk -v TempArr="${IDARR }" I have test.awk file as below : BEGIN { Flag = 1; } { print "Hello"; for(i in TempArr) { print i; } } (9 Replies)
Discussion started by: nes
9 Replies
Jcode(3pm)						User Contributed Perl Documentation						Jcode(3pm)

NAME
Jcode - Japanese Charset Handler SYNOPSIS
use Jcode; # # traditional Jcode::convert($str, $ocode, $icode, "z"); # or OOP! print Jcode->new($str)->h2z->tr($from, $to)->utf8; DESCRIPTION
<Japanese document is now available as Jcode::Nihongo. > Jcode.pm supports both object and traditional approach. With object approach, you can go like; $iso_2022_jp = Jcode->new($str)->h2z->jis; Which is more elegant than: $iso_2022_jp = $str; &jcode::convert($iso_2022_jp, 'jis', &jcode::getcode($str), "z"); For those unfamiliar with objects, Jcode.pm still supports "getcode()" and "convert()." If the perl version is 5.8.1, Jcode acts as a wrapper to Encode, the standard charset handler module for Perl 5.8 or later. Methods Methods mentioned here all return Jcode object unless otherwise mentioned. Constructors $j = Jcode->new($str [, $icode]) Creates Jcode object $j from $str. Input code is automatically checked unless you explicitly set $icode. For available charset, see get- code below. For perl 5.8.1 or better, $icode can be any encoding name that Encode understands. $j = Jcode->new($european, 'iso-latin1'); When the object is stringified, it returns the EUC-converted string so you can <print $j> instead of <print $j->euc>. Passing Reference Instead of scalar value, You can use reference as Jcode->new($str); This saves time a little bit. In exchange of the value of $str being converted. (In a way, $str is now "tied" to jcode object). $j->set($str [, $icode]) Sets $j's internal string to $str. Handy when you use Jcode object repeatedly (saves time and memory to create object). # converts mailbox to SJIS format my $jconv = new Jcode; $/ = 00; while(&lt;&gt;){ print $jconv->set($_)->mime_decode->sjis; } $j->append($str [, $icode]); Appends $str to $j's internal string. $j = jcode($str [, $icode]); shortcut for Jcode->new() so you can go like; Encoded Strings In general, you can retrieve encoded string as $j->encoded. $sjis = jcode($str)->sjis $euc = $j->euc $jis = $j->jis $sjis = $j->sjis $ucs2 = $j->ucs2 $utf8 = $j->utf8 What you code is what you get :) $iso_2022_jp = $j->iso_2022_jp Same as "$j->h2z->jis". Hankaku Kanas are forcibly converted to Zenkaku. For perl 5.8.1 and better, you can also use any encoding names and aliases that Encode supports. For example: $european = $j->iso_latin1; # replace '-' with '_' for names. FYI: Encode::Encoder uses similar trick. $j->fallback($fallback) For perl is 5.8.1 or better, Jcode stores the internal string in UTF-8. Any character that does not map to ->encoding are replaced with a '?', which is Encode standard. my $unistr = "x{262f}"; # YIN YANG my $j = jcode($unistr); # $j->euc is '?' You can change this behavior by specifying fallback like Encode. Values are the same as Encode. "Jcode::FB_PERLQQ", "Jcode::FB_XML- CREF", "Jcode::FB_HTMLCREF" are aliased to those of Encode for convenice. print $j->fallback(Jcode::FB_PERLQQ)->euc; # 'x{262f}' print $j->fallback(Jcode::FB_XMLCREF)->euc; # '&#x262f;' print $j->fallback(Jcode::FB_HTMLCREF)->euc; # '&#9775;' The global variable $Jcode::FALLBACK stores the default fallback so you can override that by assigning the value. $Jcode::FALLBACK = Jcode::FB_PERLQQ; # set default fallback scheme [@lines =] $jcode->jfold([$width, $newline_str, $kref]) folds lines in jcode string every $width (default: 72) where $width is the number of "halfwidth" character. Fullwidth Characters are counted as two. with a newline string spefied by $newline_str (default: " "). Rudimentary kinsoku suppport is now available for Perl 5.8.1 and better. $length = $jcode->jlength(); returns character length properly, rather than byte length. Methods that use MIME::Base64 To use methods below, you need MIME::Base64. To install, simply perl -MCPAN -e 'CPAN::Shell->install("MIME::Base64")' If your perl is 5.6 or better, there is no need since MIME::Base64 is bundled. $mime_header = $j->mime_encode([$lf, $bpl]) Converts $str to MIME-Header documented in RFC1522. When $lf is specified, it uses $lf to fold line (default: ). When $bpl is speci- fied, it uses $bpl for the number of bytes (default: 76; this number must be smaller than 76). For Perl 5.8.1 or better, you can also encode MIME Header as: $mime_header = $j->MIME_Header; In which case the resulting $mime_header is MIME-B-encoded UTF-8 whereas "$j->mime_encode()" returnes MIME-B-encoded ISO-2022-JP. Most modern MUAs support both. $j->mime_decode; Decodes MIME-Header in Jcode object. For perl 5.8.1 or better, you can also do the same as: Jcode->new($str, 'MIME-Header') Hankaku vs. Zenkaku $j->h2z([$keep_dakuten]) Converts X201 kana (Hankaku) to X208 kana (Zenkaku). When $keep_dakuten is set, it leaves dakuten as is (That is, "ka + dakuten" is left as is instead of being converted to "ga") You can retrieve the number of matches via $j->nmatch; $j->z2h Converts X208 kana (Zenkaku) to X201 kana (Hankaku). You can retrieve the number of matches via $j->nmatch; Regexp emulators To use "->m()" and "->s()", you need perl 5.8.1 or better. $j->tr($from, $to, $opt); Applies "tr/$from/$to/" on Jcode object where $from and $to are EUC-JP strings. On perl 5.8.1 or better, $from and $to can also be flagged UTF-8 strings. If $opt is set, "tr/$from/$to/$opt" is applied. $opt must be 'c', 'd' or the combination thereof. You can retrieve the number of matches via $j->nmatch; The following methods are available only for perl 5.8.1 or better. $j->s($patter, $replace, $opt); Applies "s/$pattern/$replace/$opt". $pattern and "replace" must be in EUC-JP or flagged UTF-8. $opt are the same as regexp options. See perlre for regexp options. Like "$j->tr()", "$j->s()" returns the object itself so you can nest the operation as follows; $j->tr("a-z", "A-Z")->s("foo", "bar"); [@match = ] $j->m($pattern, $opt); Applies "m/$patter/$opt". Note that this method DOES NOT RETURN AN OBJECT so you can't chain the method like "$j->s()". Instance Variables If you need to access instance variables of Jcode object, use access methods below instead of directly accessing them (That's what OOP is all about) FYI, Jcode uses a ref to array instead of ref to hash (common way) to optimize speed (Actually you don't have to know as long as you use access methods instead; Once again, that's OOP) $j->r_str Reference to the EUC-coded String. $j->icode Input charcode in recent operation. $j->nmatch Number of matches (Used in $j->tr, etc.) Subroutines ($code, [$nmatch]) = getcode($str) Returns char code of $str. Return codes are as follows ascii Ascii (Contains no Japanese Code) binary Binary (Not Text File) euc EUC-JP sjis SHIFT_JIS jis JIS (ISO-2022-JP) ucs2 UCS2 (Raw Unicode) utf8 UTF8 When array context is used instead of scaler, it also returns how many character codes are found. As mentioned above, $str can be $str instead. jcode.pl Users: This function is 100% upper-conpatible with jcode::getcode() -- well, almost; * When its return value is an array, the order is the opposite; jcode::getcode() returns $nmatch first. * jcode::getcode() returns 'undef' when the number of EUC characters is equal to that of SJIS. Jcode::getcode() returns EUC. for Jcode.pm there is no in-betweens. Jcode::convert($str, [$ocode, $icode, $opt]) Converts $str to char code specified by $ocode. When $icode is specified also, it assumes $icode for input string instead of the one checked by getcode(). As mentioned above, $str can be $str instead. jcode.pl Users: This function is 100% upper-conpatible with jcode::convert() ! BUGS
For perl is 5.8.1 or later, Jcode acts as a wrapper to Encode. Meaning Jcode is subject to bugs therein. ACKNOWLEDGEMENTS
This package owes a lot in motivation, design, and code, to the jcode.pl for Perl4 by Kazumasa Utashiro <utashiro@iij.ad.jp>. Hiroki Ohzaki <ohzaki@iod.ricoh.co.jp> has helped me polish regexp from the very first stage of development. JEncode by makamaka@donzoko.net has inspired me to integrate Encode to Jcode. He has also contributed Japanese POD. And folks at Jcode Mailing list <jcode5@ring.gr.jp>. Without them, I couldn't have coded this far. SEE ALSO
Encode Jcode::Nihongo <http://www.iana.org/assignments/character-sets> COPYRIGHT
Copyright 1999-2005 Dan Kogai <dankogai@dan.co.jp> This library is free software; you can redistribute it and/or modify it under the same terms as Perl itself. perl v5.8.8 2005-02-19 Jcode(3pm)
All times are GMT -4. The time now is 04:34 AM.
Unix & Linux Forums Content Copyright 1993-2022. All Rights Reserved.
Privacy Policy