Sponsored Content
Top Forums Shell Programming and Scripting Bash to update file on prefix match in two directories Post 303043618 by cmccabe on Sunday 2nd of February 2020 09:00:20 AM
Old 02-02-2020
Bash to update file on prefix match in two directories

I am trying to use bash to loop through a directory /path/to/data using a prefix match from /path/to/file. That match is obtained and works using the code below (in green)... what I can not seem to do is populate or update the corresponding prefix_file.txt in /path/to/data with the values in each of the data file in /path/to/data. The data file are always named the same way and have a single value in them.
I don't know if the portion in blue is helpful, but my thinking was on a prefix match each ${f}_file.txtis updated using the data file. Thank you Smilie.

/path/to/data
Code:
ID-5_xx.number.txt    ID-5_xx.diff.txt
67722024              180

ID-5_xx.test.txt      ID-5_xx.common.txt
59733                 92.249581%

AA-1_yy.number.txt    AA-1_yy.diff.txt
46722024              138

AA-1_yy.test.txt      AA-1_yy.common.txt
50033                 82.248581%

current /path/to/file
Code:
ID-5_xx_file.txt
number=
test=
diff=
common=

AA-1_yy_file.txt
number=
test=
diff=
common=

desired /path/to/file
Code:
ID-5_xx_file.txt
number=67722024
test=59733
diff=180
common=92.249581%

AA-1_yy_file.txt
number=46722024
test=50033
diff=138
common=82.248581%

bash
Code:
for f in /path/to/data ; do  # strat process loop for each sample
  file=$(printf '%s' ${f}.*.txt)
     fname=`basename $file` # strip of path
       prefix=$(echo $fname | cut -d. -f1) # remove after .
   if [[ $f = $prefix ]] # only execute file prefix match

    cd /path/to/file # change directory to where ${f}_file.txt is
    then [[ ${f}_file.txt == # update each ${f}_file.txt with values from /path/to/data
       number=${sample}.number.txt
       test=$qc_dir/extract/${sample}.test.txt
       diff=$qc_dir/extract/${sample}.diff.txt
       common=${sample}.common.txt ]]
fi
done


Last edited by cmccabe; 02-02-2020 at 10:01 AM.. Reason: fixed format
 

10 More Discussions You Might Find Interesting

1. Shell Programming and Scripting

how to extract paragraphs from file in BASH script followed by prefix ! , !! and !!!

I]hi all i am in confusion since last 2 days :( i posted thraed yesterday and some friends did help but still i couldnt get solution to my problem let it be very clear i have a long log file of alkatel switch and i have to seperate the minor major and critical alarms shown by ! , !! and !!!... (6 Replies)
Discussion started by: nabmufti
6 Replies

2. Shell Programming and Scripting

awk to update field file based on match

If $1 in file1 matches $2 in file2. Then the value in $2 of file2 is updated to $1"."$2 of file2. The awk seems to only match the two files but not update. Thank you :). awk awk 'NR==FNR{A ; next} $1 in A { $2 = a }1' file1 file2 file1 name version NM_000593 5 NM_001257406... (3 Replies)
Discussion started by: cmccabe
3 Replies

3. Shell Programming and Scripting

awk match to update contents of file

I am trying to match $1 in file1 with $2 in file2. If a match is found then $3 and $4 of file2 are copied to file1. Both files are tab-delimeted and I am getting a syntax error and would also like to update file1 in-place without creating a new file, but am not sure how. Thank you :). file1 ... (19 Replies)
Discussion started by: cmccabe
19 Replies

4. Shell Programming and Scripting

Match and store numerical prefix to update files

In the bash below the unique headers of each vcf.gz are stored in a text file with the same name. That is if 16-0000-file.vcf.gz was used the header text file would be 16-0000-file_header.txt. There can be multiple vcf.gz in a directory, usually 3, that I need to fix the header in each file before... (6 Replies)
Discussion started by: cmccabe
6 Replies

5. Shell Programming and Scripting

awk to update file based on partial match in field1 and exact match in field2

I am trying to create a cronjob that will run on startup that will look at a list.txt file to see if there is a later version of a database using database.txt as the source. The matching lines are written to output. $1 in database.txt will be in list.txt as a partial match. $2 of database.txt... (2 Replies)
Discussion started by: cmccabe
2 Replies

6. Shell Programming and Scripting

Perl to update field in file based of match to another file

In the perl below I am trying to set/update the value of $14 (last field) in file2, using the matching NM_ in $12 or $9 in file2 with the NM_ in $2 of file1. The lengths of $9 and $12 can be variable but what is consistent is the start pattern will always be NM_ and the end pattern is always ;... (4 Replies)
Discussion started by: cmccabe
4 Replies

7. Shell Programming and Scripting

awk to update value based on pattern match in another file

In the awk, thanks you @RavinderSingh13, for the help in below, hopefully it is close as I am trying to update the value in $12 of the tab-delimeted file2 with the matching value in $1 of the space delimeted file1. I have added comments for each line as well. Thank you :). awk awk '$12 ==... (10 Replies)
Discussion started by: cmccabe
10 Replies

8. Shell Programming and Scripting

Bash to extract file prefix and from input to use in output

In the bash below which does execute I am trying to extract the contents of ${id} is 1234, as ${id} stores the variable that changes each time. After the path is removed the contents of ${id} are stored in pref, so they can be used in the output. Currently I am not able to extract the 1234 in the... (6 Replies)
Discussion started by: cmccabe
6 Replies

9. Shell Programming and Scripting

awk move select fields to match file prefix in two directories

In the awk below I am trying to use the file1 as a match to file2. In file2 the contents of $5,&6,and $7 (always tab-delimited) and are copied to the output under the header Quality metrics. The below executes but the output is empty. I have added comments to help and show my thinking. Thank you... (0 Replies)
Discussion started by: cmccabe
0 Replies

10. Shell Programming and Scripting

awk to update file based on match in 3 fields

Trying to use awk to store the value of $5 in file1 in array x. That array x is then used to search $4 of file1 to find aa match (I use x to skip the header in file1). Since $4 can have multiple strings in it seperated by a , (comma), I split them and iterate througn each split looking for a match.... (2 Replies)
Discussion started by: cmccabe
2 Replies
All times are GMT -4. The time now is 06:51 AM.
Unix & Linux Forums Content Copyright 1993-2022. All Rights Reserved.
Privacy Policy