08-15-2014
NR==FNR doesn't look like the slow part, really. You could put a 'next' in that code block instead of the NR>FNR before the next code block, which may help by skipping that extra check. This doesn't actually look that slow though, honestly.
How large are your input files? How large are your lines? What do they look like? Are they sorted in any fashion?
The code NF?$0:a[x]"\n"; may be creating lots and lots of blank array indexes, a new one for each x not found. If your files are HUGE this may be a significant memory drain. Usually you'd do 'for X in a' before using it. What should it be doing/printing whenever x isn't found in the array?
You could try mawk if you have it, a bytecode-based awk implementation which sometimes has significant performance benefits.
Last edited by Corona688; 08-15-2014 at 06:23 PM..
10 More Discussions You Might Find Interesting
1. Shell Programming and Scripting
As I know:
FNR: The ordinal number of the current record in the current file.
NR: The ordinal number of the current record from the start of input.
I don't understand really differency between NR and FNR. Who can explain it for me? And give me an example.
Thanks (1 Reply)
Discussion started by: anhtt
1 Replies
2. UNIX for Dummies Questions & Answers
Hi Guys,
I have two files:
f1:
A B C D E F G H
f2:
A X Y Z
f1 has 48000 lines, and f2 has 68. I have been matching f1 $3 to f2 $1, and getting f3:
A A B C D E F G
I would like f3 too look like this:
A X Y Z A B C D E F G (2 Replies)
Discussion started by: heecha
2 Replies
3. Shell Programming and Scripting
cat file1
1 a b c
2 d e f
3 a f r
cat file2
a c e
output should be
1
3
means:
if field 1 of file2 matches filed 2 of file1 then print field 1 of file1
I know that it can be done using awk NR=FNR.
But not able to acheive it.
Thanks in advance. (9 Replies)
Discussion started by: shaan4uster
9 Replies
4. Shell Programming and Scripting
awk -F'' 'FNR==NR {a=$2; next} {$1=a} 1' $useralias ${entries} >> ${entries}_2
Hi,
Is there anyway to alter this command so that if it does not find a match it will just leave the line alone instead of replacing what it doesn't find with a blank space? (4 Replies)
Discussion started by: Jazmania
4 Replies
5. Shell Programming and Scripting
This has been asked and answered hundreds of times, but I can't understand the syntax of awk's NR==FNR trick for merging files and printing the correct columns.
Here's my File 1
1 rs8179466 224176 A ADD 1037 1.066 0.1421 0.8065 1.408 0.4468 ... (3 Replies)
Discussion started by: roofus
3 Replies
6. Shell Programming and Scripting
Hi
i have file1:
conn=232257 client=16218.19488.218.86:51237 protocol=LDAP
file2:
conn=232257 dn="uid=apple,ou=xxxx,ou=usfgfhfers,dc=example,dc=com"
conn=232370 dn="uid=ball,ou=yyyyyy,ou=usfhfhfhers,dc=example,dc=com"
In the output file it should match first column from above both files... (2 Replies)
Discussion started by: buzzme
2 Replies
7. Shell Programming and Scripting
Example:
$ cat file1
2
3$ cat file2
1
2
3
4
5
6The following awk script works like a charm, NR==FNR is true for file1, the remainder runs for file2:
awk '
NR==FNR {A; next}
($1 in A)
' file1 file2
2
3Now have an empty file1:
>file1and run the awk script again.
The result is empty... (8 Replies)
Discussion started by: MadeInGermany
8 Replies
8. Shell Programming and Scripting
Hi everybody!
need some awk-support. i want a line-selective printout of a file.
wat i normally will do with ...
awk ' FNR==8' sample.txt
But now i need the data from line 8, 10 and the following data from line13 to 250 wich is not end of the file. I tried allready to combine it but without... (2 Replies)
Discussion started by: IMPe
2 Replies
9. Shell Programming and Scripting
To merge mutiple *.tab files as:
file1.tab
rs1 A A
rs2 A A
rs3 C C
rs4 C Cfile2.ind
rs1 T T
rs2 T T
rs3 G G
rs4 G Gand file3.tab
rs1 B B
rs2 B B
rs3 L L
rs4 L LOutput:
file1.tab file2.tab file3.tab
AA TT BB
AA TT BB
CC GG LL
CC GG ... (4 Replies)
Discussion started by: yifangt
4 Replies
10. UNIX for Beginners Questions & Answers
Dear All,
I have below two files with me:
file 1:
A|B
E|F
C|D
file 2:
A|X|Y
R|T|I
C|V|N
I want to compare 1st column of each file and than print both columns of file 1 and column 2 and 3 of file 2
Sample required output in regards to above files is below:
A|B|X|Y
C|D|V|N (5 Replies)
Discussion started by: Nebula
5 Replies
LEARN ABOUT OSX
ppmtosixel
ppmtosixel(1) General Commands Manual ppmtosixel(1)
NAME
ppmtosixel - convert a portable pixmap into DEC sixel format
SYNOPSIS
ppmtosixel [-raw] [-margin] [ppmfile]
DESCRIPTION
Reads a portable pixmap as input. Produces sixel commands (SIX) as output. The output is formatted for color printing, e.g. for a DEC
LJ250 color inkjet printer.
If RGB values from the PPM file do not have maxval=100, the RGB values are rescaled. A printer control header and a color assignment table
begin the SIX file. Image data is written in a compressed format by default. A printer control footer ends the image file.
OPTIONS
-raw If specified, each pixel will be explicitly described in the image file. If -raw is not specified, output will default to com-
pressed format in which identical adjacent pixels are replaced by "repeat pixel" commands. A raw file is often an order of magni-
tude larger than a compressed file and prints much slower.
-margin
If -margin is not specified, the image will be start at the left margin (of the window, paper, or whatever). If -margin is speci-
fied, a 1.5 inch left margin will offset the image.
PRINTING
Generally, sixel files must reach the printer unfiltered. Use the lpr -x option or cat filename > /dev/tty0?.
BUGS
Upon rescaling, truncation of the least significant bits of RGB values may result in poor color conversion. If the original PPM maxval was
greater than 100, rescaling also reduces the image depth. While the actual RGB values from the ppm file are more or less retained, the
color palette of the LJ250 may not match the colors on your screen. This seems to be a printer limitation.
SEE ALSO
ppm(5)
AUTHOR
Copyright (C) 1991 by Rick Vinci.
26 April 1991 ppmtosixel(1)