用不同的分隔符计算单词中的字符
Counting char in word with different delimiter
我正在编写一个 shell 脚本,在其中我通过 java 获取 java 的位置。作为回应,我得到(例如)
/usr/pi/java7_32/jre/bin/java
.
我需要剪切路径以 /jre/ 结尾,更具体地说
/usr/pi/java7_32/jre/
因为提供此信息的程序无法处理较长的工作路径。
我使用 cut 和 / 作为分隔符,因为我认为 Java 安装目录总是相同的,因此
cut -d'/' -f1-5
得到这个结果的效果很好:
/usr/pi/java7_32/jre/
但由于 java 也可以安装在其他地方,例如
/usr/java8_64/jre/
该语句无法正常工作。
我需要尝试过 sed、awk、cut 和它们的不同组合,但没有找到我喜欢的答案。
正如标题所说,在shell从左到右数的前提下,我会统计汽车出现的次数/
直到找到替代jre/
正确的。
递增的数字将是我想用分隔符剪切的字段。
path=$(which java) # example: /usr/pi/java7_32/jre/bin/java
i=0
#while loop with a statment which would go through path
while substring != jre/ {
if (char = '/')
i++
}
#cut the path
path=$path | cut -d'/' -f 1-i
#/usr/pi/java7_32/jre result
问题是前后路径的最终差异
/java7_64/jre/, like */java*/jre/
我愿意接受任何想法和解决方案,非常感谢!
问候
一月
你可以用grep得到结果:
path=$(echo $path | grep -o ".*/jre/")
您可以使用shell的内置参数操作来获得您所需要的。 (这将节省创建其他进程来提取所需信息的需要)。
jpath="$(which java)"
# jpath now /usr/pi/java7_32/jre/bin/java
echo ${jpath%jre*}jre
产生
/usr/pi/java7_32/jre
同样适用于
jpath=/usr/java8_64/jre/
%
表示从字符串右侧删除匹配的 shell reg-ex 模式。然后我们放回 jre
以获得您需要的路径。
您可以覆盖 which java
中的值
jpath=${jpath%jre*}jre
IHTH
我正在编写一个 shell 脚本,在其中我通过 java 获取 java 的位置。作为回应,我得到(例如)
/usr/pi/java7_32/jre/bin/java
.
我需要剪切路径以 /jre/ 结尾,更具体地说
/usr/pi/java7_32/jre/
因为提供此信息的程序无法处理较长的工作路径。
我使用 cut 和 / 作为分隔符,因为我认为 Java 安装目录总是相同的,因此
cut -d'/' -f1-5
得到这个结果的效果很好:
/usr/pi/java7_32/jre/
但由于 java 也可以安装在其他地方,例如
/usr/java8_64/jre/
该语句无法正常工作。
我需要尝试过 sed、awk、cut 和它们的不同组合,但没有找到我喜欢的答案。
正如标题所说,在shell从左到右数的前提下,我会统计汽车出现的次数/
直到找到替代jre/
正确的。
递增的数字将是我想用分隔符剪切的字段。
path=$(which java) # example: /usr/pi/java7_32/jre/bin/java
i=0
#while loop with a statment which would go through path
while substring != jre/ {
if (char = '/')
i++
}
#cut the path
path=$path | cut -d'/' -f 1-i
#/usr/pi/java7_32/jre result
问题是前后路径的最终差异
/java7_64/jre/, like */java*/jre/
我愿意接受任何想法和解决方案,非常感谢!
问候 一月
你可以用grep得到结果:
path=$(echo $path | grep -o ".*/jre/")
您可以使用shell的内置参数操作来获得您所需要的。 (这将节省创建其他进程来提取所需信息的需要)。
jpath="$(which java)"
# jpath now /usr/pi/java7_32/jre/bin/java
echo ${jpath%jre*}jre
产生
/usr/pi/java7_32/jre
同样适用于
jpath=/usr/java8_64/jre/
%
表示从字符串右侧删除匹配的 shell reg-ex 模式。然后我们放回 jre
以获得您需要的路径。
您可以覆盖 which java
jpath=${jpath%jre*}jre
IHTH