【问题标题】:how to do change wit sed in bash script如何在 bash 脚本中使用 sed 进行更改
【发布时间】:2014-11-01 18:23:12
【问题描述】:

您好,下面是我的 bash 脚本。它需要一个源文件和一个令牌文件, 令牌文件包含 servicename:usage 如果找到,我必须在源文件中逐行查找服务名称,然后计算内存使用情况,然后将 -Xmxm 更改为 -Xmx\d{1,3}m。在下面的脚本中,粗体线解释了要做什么很简单 您可以先从脚本的一小部分了解问题

line="Supervisor.childOpts:-Xmx128m" 堆MB=750 line=($(echo $line|sed "s/${-Xmx\d{1,3}m}/$-Xmx{$heapMB}m/g"))

那么上面一行有什么问题

#!/bin/bash
源文件=$1
令牌文件=$2
如果 [ -z $sourceFile ]
然后
echo "请提供有效的源文件"
0号出口

如果 [ -z $tokenFile ]
然后
echo "请提供有效的令牌文件"
0号出口

#read 令牌文件并使用 : 进行标记以获取 0 索引处的服务名称和 1 处的百分比使用率
声明 arr_token_name
声明 arr_token_usage
计数=0
而读行

#here 行包含 :percentage usages
OIFS="$IFS"
IFS=$':'
arr=($line)
IFS="$OIFS"
如果 [ ! -z $line ]
然后
arr_token_name[$count]=${arr[0]}
arr_token_usage[$count]=${arr[1]}
count=`expr $count + 1`

完毕 # 使用所有标记逐行读取源文件
totalMemKB=$(awk '/MemTotal:/ { print $2 }' /proc/meminfo)
echo "总内存 = $totalMemKB"
而读行

result_token_search=""
#for j in "${arr_token_name[@]}"
#做
# echo "index=$j"
#完成
计数2=0
对于我在“${arr_token_name[@]}”

#here 在行中搜索令牌,如果找到
#calculate memory for this get percent usage from arr_token_usage 然后使用计算 frmula 然后按 1024 计算设备
#然后将 -Xmx\d{1,5}m 替换为 -Xmx
回声“line1=$line”
result_token_search=$(echo $line|grep -P "$i")
如果 [ -n "$result_token_search" ]
然后
percent_usage=${arr_token_usage[$count2]}
让 heapKB=$totalMemKB*$percent_usage/100
让 heapMB=$heapKB/1024
echo "sed 之前=$line"
line=($(echo $line|sed "s/${-Xmx\d{1,3}m}/$-Xmx{$heapMB}m/ g"))
回声“新行=$行”
echo "在 $line 行中找到令牌,令牌 = $i"

result_token_search=""
count2=`expr $count2+1`
cat "$line" >> tmp.txt
完成
完毕

【问题讨论】:

    标签: linux bash shell


    【解决方案1】:

    试试这条线:

    line=$( sed  "s/-Xmx[0-9]\+/-Xmx$heapMB/" <<<$line )
    

    用你的例子测试:

    kent$  line="Superviser.childOpts:-Xmx128m" 
    
    kent$  heapMB=750    
    
    kent$  line=$( sed  "s/-Xmx[0-9]\+/-Xmx$heapMB/" <<<$line )    
    
    kent$  echo $line
    Superviser.childOpts:-Xmx750m
    

    【讨论】:

      猜你喜欢
      • 2017-04-03
      • 2014-01-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-06-07
      • 1970-01-01
      • 2020-09-22
      • 1970-01-01
      相关资源
      最近更新 更多