Does anyone know any unix commands/perl script that would insert a specific character (that can be entered as either hex (ie 7C) or as the actual character (ie |)) in the position of the nth recurring occurence of a specific character.
ie perl script.pl "," 3 "|" data.txt
would replace every 3rd,6th,9th…etc comma with a pipe.
So if data.txt had the following before the script was run:
fd,3232,gfd67gf,
peas,989767,jkdfnfgjhf,
dhdhjsk,267,ujfdsy,fuyds,637296,ldosi,fduy,
873,fuisouyd,try
save,2837,ipoi
It should then have this after the script was run:
fd,3232,gfd67gf|
peas,989767,jkdfnfgjhf|
dhdhjsk,267,ujfdsy|fuyds,637296,ldosi|fduy,
873,fuisouyd|try
save,2837,ipoi
Small perl hack to solve the problem. Using the
indexfunction to find the commas, modulus to replace the right one, andsubstrto perform the replacement.Run with
perl script.pl file.csv.Note: You can place the declaration
my $ibefore thewhile(<>)loop in order to do a global count, instead of a separate count for each line. Not quite sure I understood your question in that regard.