Bash得到切割的字段

时间:2015-06-25 21:27:31

标签: regex linux bash

我有这些字符串:

./ABC/ABC/SRC/test.sh
./ABC/ABC/SRC/test.sh.t
./ABC/ABC/SRC/test.cpp
./ABC/ABC/SRC/test.g.j
./ABC/ABC/SRC/test.l.am.c

我有很多文件路径,以.开头。我希望除了.之外的整个行。如您所见,分隔符为.。我已经尝试了切割:

for path in "${path[*]}"; do PathToCheck=(`$path | cut -d"." -f1,-f2`)

这不能很好地工作,因为我不知道文件名中有多少个点,有没有办法说我想从字段1到字段'n'或直到结束字符串,我希望能够使用cutsedawk,因为当我处理数千条路径时它会更有效。

1 个答案:

答案 0 :(得分:3)

如果你想在开头只删除点,请使用:

echo "./ABC/ABC/SRC/test.sh" | cut -c2-

结果: /ABC/ABC/SRC/test.sh

这将打印除每行的第一个字符以外的所有内容(无论是否为点)。

修改

仅限Bash版本:

string="./ABC/ABC/SRC/test.sh"
echo ${string#.}

这将从$string变量的开头剥去点。如果没有点,它就不会做任何事情。