Issue
I've got a file with the following contents, and want to remove the last comma (in this case, the comma after the 'c' and 'f').
heading1(
a,
b,
c,
);
some more text
heading2(
d,
e,
f,
);
This has to be used using bash and not Perl or Python etc as these are not installed on my target system. I can use sed
, awk
etc, but I cannot use sed with the -z
argument as I'm using an old version of the utility.
So sed -zi 's/,\n);/\n);/g' $file
is off the table.
Any help would be greatly appreciated. Thanks
Solution
This might work in your version of sed. Then again it might not.
sed 'x;1d;G;/;$/s/,//;$!s/\n.*//' $file
Rough translation: "Swap this line with the hold space. If this is the first line, do no more with it. Append the hold space to the line in the buffer (so that you're looking at the last line and the current one). If what you have ends with a semicolon, delete the comma. If you're not on the last line of the file, delete the second of the two lines you have (i.e. the current line, which we'll deal with after we see the next one)."
Answered By - Beta Answer Checked By - Gilberto Lyons (WPSolving Admin)