How to use awk to print text string between characters
Written by Guillermo Garron
Date: 2020-06-14 17:35:32 00:00
Today while configuring my other blog to be hosted at vercel and moving it out from Apache, I had the need to create a redirect file from my htaccess file, so I needed first to print extract the file-names from a long string, the good thing was that the file-names were between a slash /.
These are the times when I love Linux, it has so many tools to achieve what you are looking for. This time I used awk
Let's see a simple example:
echo "/source/file/"|awk -F'[/|/]' '{print $2}'
The output will be:
source
And with this:
echo "/source/file/"|awk -F'[/|/]' '{print $3}'
The output will be:
file
So the command I used was:
cat file-with-strings | awk -F'[/|/]' '{print $3}' > new-file.txt
Then, to construct the new string (in case you are curious) awk comes again:
cat new-file.txt | awk '{print "{ \"source\": \"/en/blog/" $1 "\", \"destination\": \"/posts/" $1 "\", \"permanent\": true },"}'
The file new-file.txt had only the file-name part of the URI, and the output of the command above was:
{ "source": "/en/blog/why-i-have-a-blog.html", "destination": "/posts/why-i-have-a-blog.html", "permanent": true },