Linux 如何解释${x%,*}和${x#*,}的含义
问题表述: 假设我有一个名为Linux 如何解释${x%,*}和${x#*,}的含义,linux,bash,escaping,Linux,Bash,Escaping,问题表述: 假设我有一个名为pairs.tsv的文件,其中每行包含一对逗号分隔的文件,例如,文件路径: % cat pairs.tsv path1,path2 path3,path4 下面的代码遍历每一行,并在出现逗号的位置将其拆分,然后回显拆分的每个结果 for line in $(cat pairs.tsv); do echo ${line%,*} echo ${line#*,} % returns: path1 path2 path3 path4 我想知道这些${x%,
pairs.tsv
的文件,其中每行包含一对逗号分隔的文件,例如,文件路径:
% cat pairs.tsv
path1,path2
path3,path4
下面的代码遍历每一行,并在出现逗号的位置将其拆分,然后回显拆分的每个结果
for line in $(cat pairs.tsv); do
echo ${line%,*}
echo ${line#*,}
% returns:
path1
path2
path3
path4
我想知道这些${x%,*}
和${x#*,}
背后的含义;尤其是%,*
和#*,
部分。我知道他们做什么,但我不知道他们是怎么做的!这些特殊的角色叫什么
我之所以有兴趣了解这种情况是如何发生的,是为了能够在其他情况下复制相同的逻辑。因此,任何一种暗示都是非常感谢的
提前感谢!:)
${x%,*}
- 从字符串
$x
的结尾中,删除最后一个逗号和以下任何字符
${x%%,*}
- 从字符串
$x
的结尾中,删除第一个逗号和任何后续字符
${x#*,}
- 从字符串
$x
的开头删除小于等于第一个逗号的字符
${x###*,}
- 从字符串
$x
的开头删除小于等于最后一个逗号的字符
我使用以下技巧来记住差异:
- 在我的美国键盘上,
位于%
#
比#
一个快速的男士聚会将回答两个问题(谢谢提示!)另外,快速注释:用于$(cat pairs.tsv)中的行;do
太可怕了。