In a file, say xyz.txt i want to replace the pattern of any number followed by a dot example:1.,2.,10.,11. etc.. with a whitespace. How to compose a perl command on the comm
This HAS to be a Perl oneliner?
perl -i -pe 's/\d+\./ /g'
The Perl command line options: -i
is used to specify what happens to the input file. If you don't give it a file extension, the original file is lost and is replaced by the Perl munged output. For example, if I had this:
perl -i.bak -pe 's/\d+\./ /g'
The original file would be stored with a .bak
suffix and
The -p
means to enclose your Perl program in a print loop that looks SOMEWHAT like this:
while ($_ = <>) {
print "$_";
}
This is a somewhat simplified explanation what's going on. You can see the actual perl loop by doing a perldoc perlrun
from the command line. The main idea is that it allows you to act on each line of a file just like sed
or awk
.
The -e
simply contains your Perl command.
You can also do file redirection too:
perl -pe 's/\d+\./ /g' < xyz.txt > xyz.txt.out