使用shell脚本替换文件中的一行

时间:2015-06-11 02:38:13

标签: linux shell

我需要使用shell脚本替换文件中的一行。

文件是:

# cat /root/sge_scripts/night_sched_conf
algorithm default
schedule_interval 0:0:05
maxujobs 12
queue_sort_method seqno

我想用脚本中生成的值替换第三行(在maxujobs之后)。

这是我到目前为止所做的:

#!/bin/sh
export SGE_ROOT=/opt/sge
source=/opt/sge/defalt/common/settings.sh
delete=1
total=`qstat -u "*" | awk ' { print $4 } ' | sort | uniq | wc -l`
total_users=$((total - delete))

case $total_users in

1) range=18;;
2) range=9 ;;
3) range=7 ;;
4) range=6 ;;
5) range=5 ;;
6) range=4 ;;
7) range=3 ;;
8) range=3 ;;
9) range=2 ;;
10) range=2 ;;
11) range=2 ;;
12) range=2 ;;
13) range=1 ;;
14) range=1 ;;
15) range=1 ;;
16) range=1 ;;
18) range=1 ;;
19) range=1 ;;
20) range=1 ;;
21) range=1 ;;
22) range=1 ;;
23) range=1 ;;
24) range=1 ;;
25) range=1 ;;
26) range=1 ;;
27) range=1 ;;
28) range=1 ;;
29) range=1 ;;
30) range=1 ;;
31) range=1 ;;
32) range=1 ;;
33) range=1 ;;
34) range=1 ;;
*) echo "INVALID NUMBER!" ;;
esac

current=`cat /root/sge_scripts/night_sched_conf | awk ' /maxujobs/ { print $2 } '`
if [ "$range" != "$current" ]
then
  sed -i '3s/.*/maxujobs           "$range"/' /root/sge_scripts/night_sched_conf
fi

1 个答案:

答案 0 :(得分:0)

是的,有办法做到这一点。在Linux中有一个名为Using connection As New SqlConnection(cnn) 的命令,一个流编辑器,用于编辑shell脚本文件,如更新字符串或替换字符串可以在此完成。您可以按照以下参考并尝试替换。使用此命令试一试,如果您遇到任何问题,请告诉我

Reference