Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Replace a string which is present on first line in UNIX file

Tags:

grep

unix

sed

awk

I would like to replace a string which is present on the first line though it is there on rest of the lines in the file as well. How can i do that through a shell script? Can someone help me regarding this. My code is as below. I am extracting the first line from the file and after that I am not sure how to do a replace. Any help would be appreciated. Thanks.

Guys -I would like to replace a string present in $line and write the new line into the same file at same place.

Code:

while read line
do
        if [[ $v_counter == 0 ]] then
                echo "$line"

                v_counter=$(($v_counter + 1));
        fi
done < "$v_Full_File_Nm"

Sample data:

Input

    BUXT_CMPID|MEDICAL_RECORD_NUM|FACILITY_ID|PATIENT_LAST_NAME|PATIENT_FIRST_NAME|HOME_ADDRESS_LINE_1|HOME_ADDRESS_LINE_2|HOME_CITY|HOME_STATE|HOME_ZIP|MOSAIC_CODE|MOSAIC_DESC|DRIVE_TIME| buxt_pt_apnd_20140624_head_5records.txt
100106086|5000120878|7141|HARRIS|NEDRA|6246 PARALLEL PKWY||KANSAS CITY|KS|66102|S71|Tough Times|2|buxt_pt_apnd_20140624_head_5records.txt

Output

BUXT_CMPID|MEDICAL_RECORD_NUM|FACILITY_ID|PATIENT_LAST_NAME|PATIENT_FIRST_NAME|HOME_ADDRESS_LINE_1|HOME_ADDRESS_LINE_2|HOME_CITY|HOME_STATE|HOME_ZIP|MOSAIC_CODE|MOSAIC_DESC|DRIVE_TIME| SRC_FILE_NM
100106086|5000120878|7141|HARRIS|NEDRA|6246 PARALLEL PKWY||KANSAS CITY|KS|66102|S71|Tough Times|2|buxt_pt_apnd_20140624_head_5records.txt

From the above sample data I need to replace buxt_pt_apnd_20140624_head_5records.txt with SRC_FILE_NAME string.

like image 893
Teja Avatar asked Sep 20 '25 02:09

Teja


1 Answers

Why not use sed?

sed -e '1s/fred/frog/' yourfile

will replace fred with frog on line 1.

If your 'string' is a variable, you can do this to get the variable expanded:

sed -e "1s/$varA/$varB/" yourfile

If you want to do it in place and change your file, add -i before -e.

like image 113
Mark Setchell Avatar answered Sep 23 '25 10:09

Mark Setchell