Reputation: 123
I have a file comp.pkglist
which mention package version and release. The two fields 'version change'
and 'release change'
each contain two versions in the format 'old' --> 'new'
.
Version Change: <old version> --> <new version>
Release Change: <old version> --> <new version>
$ cat comp.pkglist
Package list: nss-util-devel-3.28.4-1.el6_9.x86_64
Version Change: 3.28.4 --> 3.36.0
Release Change: 1.el6_9 --> 1.el6
Package list: tzdata-2018e-3.el6.noarch
Version Change: 2018e --> 2018g
Release Change: 3.el6 --> 1.el6
For every package name I need to search in /tmp
directory and replace its version from old version to new version and old release to new release:
$ grep -ri -n tzdata /tmp/.
/tmp/core.pkglist:578:package tzdata 2018e 3.el6 arch noarch
$ sed -i '578s/2018e/2018g/' /tmp/core.pkglist # To replace '2018e by 2018g in 578th line.
How can I make it work for all packages in the comp.pkglist
file to replace its old version to new version and old release to new release in any file under the directory /tmp
.
Upvotes: 0
Views: 60
Reputation: 1383
You haven't provided expected output anyway this sed will place with new version on all -->
lines:
sed -i 's/[^ ]\{1,\} --> \(.\{1,\}\)$/\1/'
Test:
$ cat comp.pkglist
Package list: nss-util-devel-3.28.4-1.el6_9.x86_64
Version Change: 3.28.4 --> 3.36.0
Release Change: 1.el6_9 --> 1.el6
Package list: tzdata-2018e-3.el6.noarch
Version Change: 2018e --> 2018g
Release Change: 3.el6 --> 1.el6
$ sed 's/[^ ]\{1,\} --> \(.\{1,\}\)$/\1/' comp.pkglist
Package list: nss-util-devel-3.28.4-1.el6_9.x86_64
Version Change: 3.36.0
Release Change: 1.el6
Package list: tzdata-2018e-3.el6.noarch
Version Change: 2018g
Release Change: 1.el6
Upvotes: 1