01-16-2008
merging of 2 files AWK, SHELL or something else
I have 2 files pipe delimted and want to merge them based on a key
e.g file 1
123|xxx|yyy|zzz
345|xab|yzy|zyz
456|sss|ttt|foo
file 2
123|hhh|ggg|xxx
345|ddd|www|ddd|fff
456|ddd|sss|sss|eee
so if the key is the first field, and the result should be file 1 with field 2 from file 2 based on the key
i.e. result will be
123|hhh|yyy|zzz
345|ddd|ysy|zyz
456|ddd|ttt|foo
10 More Discussions You Might Find Interesting
1. Shell Programming and Scripting
Hi there,
I have a couple of files I need to merge. I can do a simple merge by concatenating them into one larger file.
But then I need to filter the file to get a desired result.
The output looks like this:
TRNH 0000000010941
ORDH
OADR
OADR
ORDL
ENDT 1116399 000000003... (2 Replies)
Discussion started by: Meert
2 Replies
2. Shell Programming and Scripting
i have try , but i think i will never learn awk :(
now i have 2 files :
a
1:aaa:2:aaa1
2:bbb:2:bbb1
3:ccc:3:ccc1
b
aaa:2
bbb:0
ccc:3
output:
for all lines where a.$2 == b.$1
i want to compare a.$3 != b.$2 if true then set err=1 if false set err=0
and print all lines from file a +... (2 Replies)
Discussion started by: pp56825
2 Replies
3. Shell Programming and Scripting
1. if the 1st row IDs of input1 (ID1/ID2.....) is equal to any IDNames of input2
print all relevant values together as defined in the output.
2. A bit tricky part is IDno in the output. All we need to do is numbering same kind of
letters as 1 (aa of ID1) and different letters as 2 (ab... (4 Replies)
Discussion started by: ruby_sgp
4 Replies
4. Shell Programming and Scripting
I want to write a scrpit to merge files row wise (actually concatinating)
main.txt
X Y Z
file 1
A B C
file 2
1 2 3
now i want the script to check if the file1 is empty or not, if empty then make it like
A B C
1 2 3
again to check if second file is empty if not do as done... (0 Replies)
Discussion started by: shashi792
0 Replies
5. Shell Programming and Scripting
Hello,
I am trying to merge data from two text files. One file (File1) contains a listing of data which includes the trial number in Column 5, while the other text file (File2) contains what category the trial belongs to.
Here is a snippet of what File1 looks like.
1 Arrow_ST 9.738 0.905... (2 Replies)
Discussion started by: Jahn
2 Replies
6. Shell Programming and Scripting
Hi,
I have 2 files.
File 1
chr1 1234 2468 ABC
chr1 3456 4567 DEF
chr2 5643 6154 XYZ
:
:
:
:
so on....
File 2
chr1 1500 2500 positive
chr1 2500 3500 negative
chr1 3000 4500 neutral (10 Replies)
Discussion started by: Diya123
10 Replies
7. Shell Programming and Scripting
Hi,
How I can merge two file columns such as the followings using awk:
file 1
2 3
2 2
1 1
file 2
4 3
4 5
7 6
Result:
2 3 4 3
2 2 4 5
1 1 7 6
This is an example, at the end, I will have about 25 files that I want to merge them, it is important for me that the order in the... (7 Replies)
Discussion started by: Homa
7 Replies
8. Shell Programming and Scripting
Hello,
I have a data format as follows:
Ind1 0 1 2
Ind1 0 2 1
Ind2 1 1 0
Ind2 2 2 0
I want to use AWK to have this output:
Ind1 00 12 21
Ind2 12 12 00
That is to merge each two rows with the same row names.
Thank you very much in advance for your help. (8 Replies)
Discussion started by: Homa
8 Replies
9. Shell Programming and Scripting
I have the urge to merge some files using unix shell script but I'm very new using this language and I haven't succeeded yet.
The requirement is to merge the header, body and footer into one file with the name "ANY-NAME" in below example. To identify which files should be merged, I have flagged... (9 Replies)
Discussion started by: black_soul
9 Replies
10. Shell Programming and Scripting
I just tried following
ls *.dat|sort -t"_" -k2n,2|while read f1 && read f2; do
awk '{print}' $f1
awk FNR==1'{print $1,$2,$3,$4,$5,"*","*","*" }' OFS="\t" $f2
awk '{print}' $f2
donegot following result
18-Dec-1983 11:45:00 AM 18.692 84.672 0 25.4 24
18-Dec-1983 ... (3 Replies)
Discussion started by: Akshay Hegde
3 Replies
LEARN ABOUT DEBIAN
shell-quote
SHELL-QUOTE(1p) User Contributed Perl Documentation SHELL-QUOTE(1p)
NAME
shell-quote - quote arguments for safe use, unmodified in a shell command
SYNOPSIS
shell-quote [switch]... arg...
DESCRIPTION
shell-quote lets you pass arbitrary strings through the shell so that they won't be changed by the shell. This lets you process commands
or files with embedded white space or shell globbing characters safely. Here are a few examples.
EXAMPLES
ssh preserving args
When running a remote command with ssh, ssh doesn't preserve the separate arguments it receives. It just joins them with spaces and
passes them to "$SHELL -c". This doesn't work as intended:
ssh host touch 'hi there' # fails
It creates 2 files, hi and there. Instead, do this:
cmd=`shell-quote touch 'hi there'`
ssh host "$cmd"
This gives you just 1 file, hi there.
process find output
It's not ordinarily possible to process an arbitrary list of files output by find with a shell script. Anything you put in $IFS to
split up the output could legitimately be in a file's name. Here's how you can do it using shell-quote:
eval set -- `find -type f -print0 | xargs -0 shell-quote --`
debug shell scripts
shell-quote is better than echo for debugging shell scripts.
debug() {
[ -z "$debug" ] || shell-quote "debug:" "$@"
}
With echo you can't tell the difference between "debug 'foo bar'" and "debug foo bar", but with shell-quote you can.
save a command for later
shell-quote can be used to build up a shell command to run later. Say you want the user to be able to give you switches for a command
you're going to run. If you don't want the switches to be re-evaluated by the shell (which is usually a good idea, else there are
things the user can't pass through), you can do something like this:
user_switches=
while [ $# != 0 ]
do
case x$1 in
x--pass-through)
[ $# -gt 1 ] || die "need an argument for $1"
user_switches="$user_switches "`shell-quote -- "$2"`
shift;;
# process other switches
esac
shift
done
# later
eval "shell-quote some-command $user_switches my args"
OPTIONS
--debug
Turn debugging on.
--help
Show the usage message and die.
--version
Show the version number and exit.
AVAILABILITY
The code is licensed under the GNU GPL. Check http://www.argon.org/~roderick/ or CPAN for updated versions.
AUTHOR
Roderick Schertler <roderick@argon.org>
perl v5.8.4 2005-05-03 SHELL-QUOTE(1p)