在 bash 脚本中重新格式化命令输出

在 bash 脚本中重新格式化命令输出

在脚本中,这里尝试删除 : ,然后在打印输出中将 / 恢复为 \

目前我必须显示linux路径:主目录位于此处:rtp1-filer-ns:/homedir-private/private007/user

并希望重新格式化,以便我的用户轻松将 Windows 路径设置为主目录:\rtp1-filer-ns\homedir-private\private007\user

目前这部分脚本如下

echo "shell 是: `ypmatch $EndUser passwd | awk -F\: '{ print $7 }'`"
回显“”
echo“主目录位于此处:”
   ypmatch $EndUser auto_home
回显“”
echo "主目录的 Windows 路径:"
echo "\\\\`ypmatch $EndUser auto_home | awk -F':' '{print $1}'`\\$EndUser"

给我打印出来:

主目录位于此处:
rtp1-filer-ns:/homedir-private/private007/用户

Windows 主目录路径:
\\rtp1-filer-ns\用户

假设我可以使用 sed /awk 之类的东西,开放征求建议 $EndUser 是一个已定义的变量

答案1

bash

第一种方法 - 使用参数替换

#use command substitution to set command output into variable var
var=$(ypmatch $EndUser auto_home)
#strip out the first :
var=${var/:}
#replace all instances of / with \
var=${var//\//\\}
echo $var

rtp1-filer-ns\homedir-private\private007\user

第二种方法——使用数组

# Set path components into array frags
IFS=/ read -a frags < <(ypmatch $EndUser auto_home)

# Strip ":" off rtp1-filer-ns
frags[0]="${frags[0]%:}"

# Set IFS to \ to print frags \-separated
echo "$(IFS=\\ ;printf '%s\n' "${frags[*]}";)"

rtp1-filer-ns\homedir-private\private007\user

相关内容