我有这些字符串:
./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'或直到结束字符串,我希望能够使用cut
和sed
或awk
,因为当我处理数千条路径时它会更有效。
答案 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
变量的开头剥去点。如果没有点,它就不会做任何事情。