将输出分配给变量时,awk命令无法正常工作

时间:2017-09-19 13:19:23

标签: bash shell awk quoting

我正在尝试将空间转换为文件名中的下划线,我的脚本是 如下。

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

当我使用echo命令

时,此脚本可以正常工作
echo "$(basename "$old_file")" | awk 'gsub(" ","_")'

但是当涉及将输出分配给变量时,它不起作用......

有人知道这个想法吗?

1 个答案:

答案 0 :(得分:2)

实际上不需要awk,请注意下面的一个替换所有spaceunderscore,而不仅仅是文件名,它也可以是路径

$ old_file="/home/somedir/otherdir/foobar 20170919.csv"
$ newfile="${old_file// /_}"
$ echo "$newfile"
/home/somedir/otherdir/foobar_20170919.csv