sed没有替换Bash脚本中的字符

时间:2017-04-10 22:54:30

标签: linux bash shell sed character

我正在尝试编写一个shell脚本来替换每个不是大写字母的字符。第一个参数是一个字符(这将替换其他字符),而其他参数是文件名。当我在终端中尝试Sed命令时,它工作正常,但是在我的脚本中它只是打印出除了以给定字符开头的那些行之外的每一行。 (我想在stdout上得到结果。)

for i in "${@:2}"
do
   if [ -f $i ]
   then
      sed "s/[^A-Z]/${1}/g" $i
   else
      echo "$i does not exist"
   fi
done

2 个答案:

答案 0 :(得分:0)

您可以尝试替换:

sed "s/[^A-Z]/${1}/g" $i

by:

sed -e "s/[^A-Z]/${1}/g" $i

要将每个字母替换为大写,您可以执行以下操作:

sed -e 's/\(.*\)/\U\1/' $i

答案 1 :(得分:0)

我已经使用f1,f2,f3检查了你的脚本,内容相同,你确定它不起作用吗?

?- matching([10,71,83,9,24,5,2],[8,71,26,9],Positions).
Positions = [] ;
Positions = [] ;
Positions = [_2420] ;
Positions = [_2420] ;
Positions = [_2420, _2432];...