问题制定:
让我们说我有一个名为pairs.tsv
的文件,其中每行包含逗号分隔的一对,例如,文件路径:
% cat pairs.tsv
path1,path2
path3,path4
以下代码遍历每一行并将其拆分到comma
出现的位置,然后回显拆分的每个结果。
for line in $(cat pairs.tsv); do
echo ${line%,*}
echo ${line#*,}
% returns:
path1
path2
path3
path4
我想知道这些${x%,*}
和${x#*,}
背后的含义;特别是%,*
和#*,
部分。我知道他们做了什么,但我不知道他们是怎么做的!这些特殊字符叫什么!
我有兴趣了解它是如何失效的原因是能够在其他情况下复制相同的逻辑。因此,非常感谢任何类型的提示。
提前致谢! :)
答案 0 :(得分:2)
${x%,*}
$x
的结束,删除最后逗号以及任何后续字符${x%%,*}
$x
的结束,删除第一个逗号以及任何后续字符${x#*,}
$x
的开头,删除字符,包括第一个逗号${x##*,}
$x
的开头,删除字符,包括最后逗号我使用这些技巧来记住差异:
#
来自%
##
比#