Rohan Kishibe Rohan Kishibe - 6 months ago 20
Bash Question

awk command does not work properly when assigning output to variable

I'm trying to convert space to underscore in a file name, my script is
like below.

old_file=/home/somedir/otherdir/foobar 20170919.csv
new_file="$(basename "$old_file")" | awk 'gsub(" ","_")'

This script works fine when I use with

echo "$(basename "$old_file")" | awk 'gsub(" ","_")'

but when it comes to assigning the output to variables, it doesn't work...

Does anybody know the idea?

Answer Source

Actually no need of awk, please note below one replaces all space to underscore, not just filename, it can be path too

$ old_file="/home/somedir/otherdir/foobar 20170919.csv"
$ newfile="${old_file// /_}"
$ echo "$newfile"
Recommended from our users: Dynamic Network Monitoring from WhatsUp Gold from IPSwitch. Free Download