Tuesday, 15 January 2013

KSH: sed command to search and replace last occurrence of a string in a file -



KSH: sed command to search and replace last occurrence of a string in a file -

i have tried search lastly occurrence in file using sed. in hp-ux tac alternative not available.

for ex: below info in file,

a|2121212|666666666 | 2|01|2 |b|1111111111 |234234234 |00001148| b|2014242|8888888888| 3|12|3 |b|22222222222 |45345345 |00001150| c|4545456|4444444444| 4|31|4 |b|3333333333333 |4234234 |00001148|

i'm trying:

cat $filename | sed 's/00001148/00001147/g'

it changing 00001148 00001147 both occurrence of 00001148.

i have search |00001148| of lastly occurrence , replace number. sed command changing both 2 instances of 00001148.

edit

to match lastly line, utilize $

sed '$s/00001148/00001147/g' $filename

will give output as

a|2121212|666666666 | 2|01|2 |b|1111111111 |234234234 |00001148| b|2014242|8888888888| 3|12|3 |b|22222222222 |45345345 |00001150| c|4545456|4444444444| 4|31|4 |b|3333333333333 |4234234 |00001147|

if matching line lastly line in file, utilize tail instead of cat

tail -1 $filename | sed 's/00001148/00001147/g'

the tail command selects last(tail) lines form file, here specified take 1 line usint -1 option

if not lastly line,

grep "00001148" $filename | tail -1 | sed 's/00001148/00001147/g'

the grep command finds occureences , tail selects lastly line , sed makes replacement.

sed ksh hp-ux

No comments:

Post a Comment