How can I search and replace a variable in Linux?

I have a bunch of files with lots of rows configured like this:

what,r-crq,What,What,VAC5700-035080,What
i,pns11,I,I,VAC5700-035090,I
do,vdd,did,did,VAC5700-035100,did

I want to do a search and replace to end up with this, storing and reinserting the 4 numbers after VAC and removing the trailing portion of the VAC number:

what,r-crq,What,What,VAC5700,What
i,pns11,I,I,VAC5700,I
do,vdd,did,did,VAC5700,did

Is there a way to do this for all the files at once (the VAC number will vary, so it needs to be stored as a variable), preferably in the Bash shell?

I assume I could also do this in “Notepad++” using regex, but I think the shell script would be preferable as I could do all the files as a batch.


Use the sed command:

sed -e 's|,VAC\([0-9][0-9][0-9][0-9]\)-[0-9]*,|,VAC\1,|' inFile > outFile

It will substitute ,VAC####-#...#, with ,VAC####,.