Sponsored Content
Top Forums Shell Programming and Scripting script to match patterns in 2 different files. Post 302442168 by mathews on Tuesday 3rd of August 2010 12:31:35 PM
Old 08-03-2010
script to match patterns in 2 different files.

I am new to shell scripting and need some help. I googled, but couldn't find a similar scenario.

Basically, I need to rename a datafile. This is the scenario -
I have a file, readonly.txt that has 2 columns - file# and name.
I have another file,missing_files.txt that has id and name. Both the files are tab delimited.
This is how the 2 files look -

readonly.txt -
Code:
1|/u01/oradata/smp1.dbf
552|/u15/oradata/smp32.dbf
83|/u12/oradata/gdf12.dbf
24|/u01/oradata/ryt.dbf
52|/u01/oradata/yrr11.dbf

missing_files.txt-
Code:
00552|missing00552.dbf
00083|missing00083.dbf
00001|missing00001.dbf
00024|missing00024.dbf
00052 |missing00052.dbf

Now, this is what I want -
loop through missing_files.txt and if the first column matches the first column in readonly.txt (by ignoring the leading 0s in the second file), then, give me the second column of that line.
For eg, the last line in readonly.txt is 52|/u01/oradata/yrr11.dbf. Now the first column matches the first column of the last line in missing_files.txt (It should not match the first line in missing_files.txt-since 00552 also has 52 in it), then I need to output missing00052.dbf.

This is the script that I have now -
Code:
for i in `cat missing_files.txt`
do
fileid=$(grep $i missing_files.txt | cut -d"|" -f1)
missing_filename=$(grep $i missing_files.txt | cut -d"|" -f2)
filename=$(grep $fileid $smartp1_readonlydbfiles.txt | cut -d"|" -f2)
echo $filename
done

The
Code:
filename=$(grep $fileid $smartp1_readonlydbfiles.txt | cut -d"|" -f2)

doesn't do what I want.

Can someone please help?

Moderator's Comments:
Mod Comment Use code tags please, ty.
 

10 More Discussions You Might Find Interesting

1. Shell Programming and Scripting

Script for searching a pattern in 5 files and deleting the patterns given

Hi All, I have written the below script that searches for the pattern in a file and delete them if present. please can some one have a look and suggest the changes in the script. #!bin/sh # The pattern that user want to add to the files echo "Enter the pattern of the redirect" read... (4 Replies)
Discussion started by: Shazin
4 Replies

2. UNIX for Dummies Questions & Answers

script to search patterns inside list of files

>testfile while read x do if then echo $x >> testfile else fi if then echo $x >> testfile else fi done < list_of_files is there any efficient way to search abc.dml and xyz.dml ? (2 Replies)
Discussion started by: dr46014
2 Replies

3. Shell Programming and Scripting

Find files that do not match specific patterns

Hi all, I have been searching online to find the answer for getting a list of files that do not match certain criteria but have been unsuccessful. I have a directory that has many jpg files. What I need to do is get a list of the files that do not match both of the following patterns (I have... (21 Replies)
Discussion started by: nikos-koutax
21 Replies

4. Shell Programming and Scripting

Using AWK to match CSV files with duplicate patterns

Dear awk users, I am trying to use awk to match records across two moderately large CSV files. File1 is a pattern file with 173,200 lines, many of which are repeated. The order in which these lines are displayed is important, and I would like to preserve it. File2 is a data file with 456,000... (3 Replies)
Discussion started by: isuewing
3 Replies

5. Shell Programming and Scripting

Match 2 different patterns and print the lines

Hi, i have been trying to extract multiple lines based on two different patterns as below:- file1 @jkm|kdo|aas012|192.2.3.1 blablbalablablkabblablabla sjfdsakfjladfjefhaghfagfkafagkjsghfalhfk fhajkhfadjkhfalhflaffajkgfajkghfajkhgfkf jahfjkhflkhalfdhfwearhahfl @jkm|sdf|wud08q|168.2.1.3... (8 Replies)
Discussion started by: redse171
8 Replies

6. UNIX for Dummies Questions & Answers

Match patterns from another file and tag

Hi all, I have a file , which has 6 tab delimited fields, with $3 and $4 subfielded with spaces. I wamt to match cols $2,$3,$4 of tmp1 with tmp2, ..and then flag the 5th col if found. tmp1 1756 Xerm XermA XermB XermC XermD AA TT AA GG A 1 1763 Xerm XermA XermB XermC... (3 Replies)
Discussion started by: senhia83
3 Replies

7. Shell Programming and Scripting

Match 2 patterns together

How can I quickly print out lines in a datafile which has presence of both patterns in a row of another file. Maybe awk can do it much faster than bash. Patternfile ID1 PAT11 PAT12 ID1 PAT21 PAT22 ID2 PAT31 PAT32 datafile headerline... (2 Replies)
Discussion started by: abh.kumar
2 Replies

8. Shell Programming and Scripting

awk to print match or non-match and select fields/patterns for non-matches

In the awk below I am trying to output those lines that Match between file1 and file2, those Missing in file1, and those missing in file2. Using each $1,$2,$4,$5 value as a key to match on, that is if those 4 fields are found in both files the match, but if those 4 fields are not found then missing... (0 Replies)
Discussion started by: cmccabe
0 Replies

9. Shell Programming and Scripting

Bash - Find files excluding file patterns and subfolder patterns

Hello. For a given folder, I want to select any files find $PATH1 -f \( -name "*" but omit any files like pattern name ! -iname "*.jpg" ! -iname "*.xsession*" ..... \) and also omit any subfolder like pattern name -type d \( -name "/etc/gconf/gconf.*" -o -name "*cache*" -o -name "*Cache*" -o... (2 Replies)
Discussion started by: jcdole
2 Replies

10. UNIX for Beginners Questions & Answers

Match patterns between two files and extract certain range of strings

Hi, I need help to match patterns from between two different files and extract region of strings. inputfile1.fa >l-WR24-1:1 GCCGGCGTCGCGGTTGCTCGCGCTCTGGGCGCTGGCGGCTGTGGCTCTACCCGGCTCCGG GGCGGAGGGCGACGGCGGGTGGTGAGCGGCCCGGGAGGGGCCGGGCGGTGGGGTCACGTG... (4 Replies)
Discussion started by: bunny_merah19
4 Replies
mddiff(1)						 Sync Mail Dir (smd) documentation						 mddiff(1)

NAME
mddiff - computes diff for maildirs SYNOPSIS
mddiff [--max-mailno mno] [--db-file dbf] [-l|--list] [-s|--symlink] [--exclude globexpr] [-v|--verbose] [-d|--dry-run] [-n|--no-delete] [--help] [--sha1sum] paths DESCRIPTION
mddiff computes the delta from an old status of a maildir (previously recorded in a support file, called db file) and the current status, generating a set of commands (a diff) that a third party software can apply to synchronize a (eventually remote) copy of the maildir. If paths is a single file name, and that file is a fifo, mddiff reads from it file names separated by new line and outputs the sha1 of its header and body separated by space. $ mddiff /tmp/fifo_for_mddiff 806a0ffe4f29766effd764... 463e543da9dac8e298... 582cbb6a5cd3ce13965c8c... 8fa60a7458b1157193... ... If paths is a single file name, and that file is a fifo, and the -s option is passed, mddiff reads from that fifo two lines at a time, respectively a source name and a target name. It then creates a symlink named as as the target name pointing to the source name. If some dictories need to be created in order to create the symlink, this is also done. mddiff will print 'OK' on stdout to signal a success, 'ERROR' to signal an error. If paths is a list of directories, mddiff outputs a list of actions a client has to perform to synchronize a copy of the same maildirs. This set of actions is relative to a previous status of the maildir stored in the db file. The input directories are traversed recur- sively, and every file encountered inside directories named cur/ and new/ is a potential mail message (if it contains no it is skipped). $ mddiff ~/Mail/ ADD ~/Mail/cur/1239038050.14937_1.garfield:2,S 66532ebb05b252e... ... Every client (endpoint using mddiff for synchronization) must use a different db-file, and the db-file is strictly related with the set of directories given as arguments, and should not be used with a different directory set. Adding items to the directory set is safe, while removing them may not do what you want (delete actions are generated). mddiff does not alter the dbf file, it generates a new one called dbf.new. It is up to the higher level tool smd-server(1) to rename dbf.new to dbf in case the other endpoint successfully applied the diff. The --exclude option tells mddiff to ignore all paths matching the given glob(7) expression. This option can be passed multiple times. Matching is performed using fnmatch(3) with no special flags, thus '*' and '?' match any character including '/'. Matching is performed when a directory is entered. If the match is successful, the directory and all its subedirectories are skipped. The --no-delete option tells mddiff to not output a DELETE action for files that disappear. Note that a DELETE action is anyway generated for files that are moved (i.e. move is COPY plus DELETE). The result is that deletions are not propagated to the other endpoint. OPTIONS
--max-mailno mno Estimation of max mail message number (defaults to the number of messages in the db-file + 1000 or 500000 if there is no db-file). You may want to decrease it for the first run on small systems. It is anyway increased automatically when needed --db-file dbf Name of the cache for the endpoint (default db.txt) --exclude globexpr Exclude paths maching the given expression --sha1sum Behaves like the sha1sum utility --mkdir-p Behaves like mkdir -p --mkfifo Behaves like mkfifo -l --list Only list the mailboxes recursively contained in paths -s --symlink Create symlinks for paths read on the input fifo -v --verbose Increase program verbosity (printed on stderr) -d --dry-run Do not generate a new db-file -n --no-delete Do not track deleted files --help This help screen NOTES
mddiff is a low level utility, used by smd-server and smd-client. You should use higher level tools like smd-pull(1), smd-push(1) and smd- loop(1) SEE ALSO
smd-client(1), smd-server(1), smd-pull(1), smd-push(1), smd-loop(1) AUTHOR
Enrico Tassi <gares@fettunta.org> 11 June 2012 mddiff(1)
All times are GMT -4. The time now is 03:37 PM.
Unix & Linux Forums Content Copyright 1993-2022. All Rights Reserved.
Privacy Policy