求助:文本处理之关键词转义(已解)

sh/bash/dash/ksh/zsh等Shell脚本
回复
halfwolf
帖子: 40
注册时间: 2012-01-28 21:27

求助:文本处理之关键词转义(已解)

#1

帖子 halfwolf » 2012-02-13 17:37

待处理字符串
independent
index
……
目的:缩掉最后一个字符
处理方式
expr independent : '\(.*\).'
结果正常,返回expr independen

expr index : '\(.*\).'
结果异常,返回值为0;

猜想index为该函数的关键词,故请教各位高人,如何转义让expr将index当作普通字符处理?

谢谢!
上次由 halfwolf 在 2012-02-14 9:14,总共编辑 1 次。
fnan
帖子: 919
注册时间: 2009-07-01 22:04

Re: 求助:文本处理之关键词转义

#2

帖子 fnan » 2012-02-13 18:54

echo index|sed 's/.$//'
str=index;echo ${str:0:${#str}-1}
#都比expr好。
bash不如perl精妙,学不到lisp的皮毛,远不够c++强悍,不过可以用。
头像
josephyoung
帖子: 158
注册时间: 2011-11-05 18:53
来自: 南极圈

Re: 求助:文本处理之关键词转义

#3

帖子 josephyoung » 2012-02-13 20:09

man expr 可以看到有"+"这个参数
+ TOKEN
interpret TOKEN as a string, even if it is a

keyword like `match' or an operator like `/'
所以,你要的命令是 expr + index : '\(.*\).'
halfwolf
帖子: 40
注册时间: 2012-01-28 21:27

Re: 求助:文本处理之关键词转义

#4

帖子 halfwolf » 2012-02-14 9:13

谢谢josephyoung,
expr + index : '\(.*\).'是我所题问题的答案;

谢谢fnan,
你提供的两种做法均可以,我最终选择${str:0:${#str}-1},因为该方法更简介明了。
回复