Zdeněk Sklenář
Zdeněk Sklenář

Reputation: 57

How to replace the specific line occurence in file in bash

Hello i need a little help with my personal project i have something like this:

sourceFile:

something,something,something,something,something,someth ing,
something,something,something,something,something,somethi ng,
something,something,something,something,something,someth ing,

I need to write my variable after the last , in specific line (i have different value for every line)

resultFile:

something,something,something,something,something,someth ing,result1
something,something,something,something,something,somethi ng,result2
something,something,something,something,something,someth ing,result3

I used this:

sed -i "$numberOfLine,/,/ s/,/,$actualDeparture/6" $fileName

but the result is: badResultFile:

something,something,something,something,something,someth ing,result1
something,something,something,something,something,somethi ng,result2result1
something,something,something,something,something,someth ing,result3result2

I don't know why i have result2 and result1 in second line and i'm really desperate, because i don't know hoiw to fix this.

Upvotes: 2

Views: 645

Answers (2)

SLePort
SLePort

Reputation: 15461

With your address range $numberOfLine,/,/ all lines starting from $numberOfLine to next line containing , are processed.

And you don't need to count number of , in your s command, just replace $(end of line) with your variable value.

To process each line individually, try this:

sed -i "$numberOfLine s/$/$actualDeparture/" "$fileName"

Upvotes: 1

heemayl
heemayl

Reputation: 42017

I would use awk:

awk '{ print $0 "result" NR }' sourceFile
  • print $0 "result" NR prints each line, then string result, and then each line (record) number (NR)

Example:

% cat file.txt  
something,something,something,something,something,something,
something,something,something,something,something,something,
something,something,something,something,something,something,

% awk '{ print $0 "result" NR }' file.txt
something,something,something,something,something,something,result1
something,something,something,something,something,something,result2
something,something,something,something,something,something,result3

Upvotes: 3

Related Questions