我有一个变量,它是一个windows文件夹的路径。
我想用SED处理方式。
示例:
输入:
\\computer1\folder$
输出:
computer1
我总是会选择介于\\和\
之间的主机名有人可以给我一个灯吗?
答案 0 :(得分:1)
您可以在兼容POSIX的shell中执行此操作:
% folder='\\computer1\folder$'
% folder="${folder/\\\\/}" # Remove leading '\\'
% printf "%s\n" "${folder%%\\*}"
computer1
替代Bashism:
% folder='\\computer1\folder$'
% [[ "$folder" =~ '\\'([^\\]*) ]]
% printf "%s\n" "${BASH_REMATCH[1]}"
computer1
答案 1 :(得分:0)
对于这种情况,awk
是更好的选择。使用awk -F'\' '{print $2}'
实施例
$> echo "\\computer1\folder$"|awk -F'\' '{print $2}'
输出
computer1
或者您可以尝试使用变量。
$> export val="\\computer1\folder$"
$> echo $val|awk -F'\' '{print $2}'
computer1
答案 2 :(得分:0)
使用sed:
$ sed 's/\\\\\([^\]*\)\\.*/\1/' <<< '\\computer1\folder$'
computer1
sed substitution命令的基本语法是s/oldtext/newtext/
。
s
用于替换命令\
进行转义,以使其成为\\
\([^\]*\)\
会捕获每个非\
个字符,直到下一个\
\1
答案 3 :(得分:0)
用awk。 s
代表“分隔符”,a
代表“any”。
echo '\\computer1\folder$' | \
awk '{s="\\\\"; a=".*"; sub(a s s, ""); sub(s a, ""); print}'