阅读如何在bash
中获取子字符串,我发现以下命令有效:
var="/aaa/bbb/ccc/ddd"
echo ${var##*/}
哪个产生“ ddd”
我的完整问题是要从管道中读取此消息:
我想实现以下目标:
echo /aaa/bbb/ccc/ddd | xargs echo ${MyVar##*/}
但是它不起作用。
我尝试使用-I选项跟随方式:
echo /aaa/bbb/ccc/ddd | xargs -I MyVar echo ${MyVar##*/}
也没有用,(我认为它不能插值)
有什么办法解决这个问题?
是否还可以读取子字符串的左部分而不是右部分?
答案 0 :(得分:1)
您可以这样使用它:
echo '/aaa/bbb/ccc/ddd' | xargs -I {} bash -c 'echo "${1##*/}"' - {}
ddd
或仅使用awk
:
echo '/aaa/bbb/ccc/ddd' | awk -F/ '{print $NF}'
答案 1 :(得分:0)
您可以这样做:
echo '/aaa/bbb/ccc/ddd' | sed -E 's/(.*\/)(.*)/\2/g' | xargs -n 1 $1
希望有帮助!