我有几个 git 仓库,格式如下:
product.module1.git
product.module2.git
...
现在我只想遍历这个列表,以获取所需内容。
module1
module2
我该怎么做才能实现这个目标?我已经尝试过使用grep与ls组合,但是我不知道如何删除首尾的字符串部分。
grep
支持 -P
选项:$ grep -oP '(?<=[.])\w+(?=[.])' file
module1
module2
(?<=[.])
是一个向后查找。在这种情况下,它匹配紧跟在句点后面的内容。
\w+
匹配任意数量的单词字符。
(?=[.])
是一个向前查找。在这种情况下,它匹配紧跟在句点之前的内容。
剪切
操作就能完成任务:cut -d . -f2 file
module1
module2
awk -F. '{print $2}' file
module1
module2
while read -r line; do
if [[ "$line" =~ \.(.*)\. ]]; then
echo "${BASH_REMATCH[1]}"
fi
done < file
输出:
module1 module2
IFS
进行分词很容易:var="product.module1.git"
IFS="." tokens=( ${var} )
echo ${tokens[1]}
# this outputs module1