#!/bin/bash
# Move to the directory where the input files are located.
cd "/home/username/blah"
awk '
BEGIN { # Set input and output field separators.
FS = OFS = ","
}
FNR == NR {
# Get keys from 1st input file.
key[$1] = $2
next
}
function copyback() {
# After we have read the last line of input from a file, rewrite it
# with updated contents if anything was changed.
if(nc) {
for(i = 1; i <= lines; i++)
print d[i] > filename
close(filename)
}
}
FNR == 1 {
# When we see the first line of subsequent files, update the previous
# input file...
copyback()
# and get ready for the current input file...
filename = FILENAME
lines = nc = 0
}
{ # Gather data from current input file...
if($1 in key) {
# Add data gathered from first input file
d[++lines] = $1 OFS key[$1]
# Increment the number of changes made.
nc++
} else { # Just save the input line unchanged.
d[++lines] = $0
}
}
END { # When we hit EOF on the last input file, update the last input file...
copyback()
}' file1 file2 file3
If you want to try this on a Solaris/SunOS system, change awk to /usr/xpg4/bin/awk or nawk.
This User Gave Thanks to Don Cragun For This Post:
Hi guys,
say I have a few files in a directory (58 text files or somthing)
each one contains mulitple strings that I wish to replace with other strings
so in these 58 files I'm looking for say the following strings:
JAM (replace with BUTTER)
BREAD (replace with CRACKER)
SCOOP (replace... (19 Replies)
Hi,
I have to write one script that has to search a list of numbers in certain zipped files.
For eg. one file file1.txt contains the numbers. File1.txt contains 5,00,000 numbers and I have to search each number in zipped files(The number of zipped files are around 1000 each file is 5 MB)
I have... (10 Replies)
Hi,
I have a master file that i need to split into multiple files based on matched patterns. sample of my data as follows:-
scaff_1 a e 123 130 c_scaff_100
scaff_1 a e 132 138 c_scaff_101
scaff_1 a e 140 150 ... (2 Replies)
Hi,
I need help to find matched patterns in 30 files residing in a folder simultaneously. All these files only contain 1 column. For example,
File1
Gr_1
st-e34ss-11dd
bt-wwd-fewq
pt-wq02-ddpk
pw-xsw17-aqpp
Gr_2
srq-wy09-yyd9
sqq-fdfs-ffs9
Gr_3
etas-qqa-dfw
ddw-ppls-qqw... (10 Replies)
Hi,
I need help to match pattern started with "RW" in file 1 and with pattern in $1 in file 2 as follows:-
File 1
BH /TOTAL=466(423); /POSITIVE=300(257); /UNKNOWN=25(25);
BH /F_P=141(141); /F_N=136; /P=4;
CC /TAX=!?; /MAX-R=2;
CC /VER=2;
RW P9610, AR_BSU , T; PAE25, AE_E57... (10 Replies)
Hi,
I am trying to extract some patterns from a line. The input file is space delimited and i could not use column to get value after "IN" or "OUT" patterns as there could be multiple white spaces before the next digits that i need to print in the output file . I need to print 3 patterns in a... (3 Replies)
Hi forum,
Can you please help me understand how to look for and replace the below pattern (containing line breaks) and return a new result?
Rules: Must match the 3 line pattern and return a 1 line result.
I have found solutions with sed, but it seems that sed installed in my system is... (5 Replies)
I have 4000 files like
$cat clus_grp_seq10_g.phy
18 1002
anig_OJJ65951_1 ATGGTTTCGCAGCGTGATAGAGAATTGTTTAGGGATGATATTCGCTCGCGAGGAACGAAGCTCAATGCTGCCGAGCGCGAGAGTCTGCTAAGGCCATATCTGCCAGATCCGTCTGACCTTCCACGCAGGCCACTTCAGCGGCGCAAGAAGGTTCCTCG
aver_OOF92921_1 ... (1 Reply)
Im having an issue when trying to replace the first column with a new set of values in multiple files. The results from the following code only replaces the files with the last set of values in val.txt. I want to replace all the files with all the values.
for date in {1..31}
do
for val in... (1 Reply)
Discussion started by: ncwxpanther
1 Replies
LEARN ABOUT DEBIAN
plan9-cat
CAT(1) General Commands Manual CAT(1)NAME
cat, read, nobs - catenate files
SYNOPSIS
cat [ file ... ]
read [ -m ] [ -n nline ] [ file ... ]
nobs [ file ... ]
DESCRIPTION
Cat reads each file in sequence and writes it on the standard output. Thus
cat file
prints a file and
cat file1 file2 >file3
concatenates the first two files and places the result on the third.
If no file is given, cat reads from the standard input. Output is buffered in blocks matching the input.
Read copies to standard output exactly one line from the named file, default standard input. It is useful in interactive rc(1) scripts.
The -m flag causes it to continue reading and writing multiple lines until end of file; -n causes it to read no more than nline lines.
Read always executes a single write for each line of input, which can be helpful when preparing input to programs that expect line-at-a-
time data. It never reads any more data from the input than it prints to the output.
Nobs copies the named files to standard output except that it removes all backspace characters and the characters that precede them. It is
useful to use as $PAGER with the Unix version of man(1) when run inside a win (see acme(1)) window.
SOURCE
/src/cmd/cat.c
/src/cmd/read.c
/bin/nobs
SEE ALSO cp(1)DIAGNOSTICS
Read exits with status eof on end of file or, in the -n case, if it doesn't read nlines lines.
BUGS
Beware of and which destroy input files before reading them.
CAT(1)