shell脚本中用法_遇到的坑

文章介绍了如何使用Linux命令如awk、grep和sed对properties文件进行操作,包括提取等号右边的值、去除空格、替换内容、插入注释、去重以及行处理等,展示了bash脚本在文本处理中的应用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

  1. propertis文件中,取等号右边,并去掉空格:
    例如server.port = 8080,要取8080
   machineIp=`cat config.properties | grep "server.port" | awk -F "=" '{print $2}' | awk '{gsub(/^\s+|\s+$/, "");print}'`
  1. 取出(后面的内容
processTemp=${processStr#*(}

具体用法参见:
https://blog.youkuaiyun.com/JineD/article/details/124196546

  1. 取出包含off内容的行号,head -1是只取出第一个包含off的行数
row=`cat nginx.conf | grep -n "off" | awk -F ":" '{print $1}' | head -1`
  1. 取出这一行中的数据
offInfo=`head -$row nginx.conf | tail -n 1`

给这一行中的数据去除空格

echo $offInfo | awk '{gsub(/^\s+|\s+$/, "");print}' > $1/install.log 2>&1
  1. 在${row}这一行添加# off(会替换原有内容)
sed -i "${row}c # off" $2/conf/nginx.conf
  1. 在第i行内容前面加上"#"
sed -i "$i{s/^/#/}" /conf/nginx.conf
  1. 第一个字符是否为"#"(cut -c -1表示取第一个字符),如果为#,则返回值为#,否则为空
cut -c -1  $SH_PATH/install.log | grep -w '#'
  1. 如果即将要被插入的参数中包含"/"(即为路径格式),则需要进行转义:
	new_sed=$(echo $3 | sed -e 's/\//\\\//g')
	

f i l e 中的 n e e d I n s e r t 全都替换成 file中的needInsert全都替换成 file中的needInsert全都替换成{new_sed}

sed -i "s/needInsert/${new_sed}/g" $file
  1. 在${insertNeedModifyRow}后面一行加入- test.log这个内容,并且前面还有空格。空格用""开始,光敲空格,插入的时候是不会有空格的
    a表示在这一行后面插入,i表示在这一行前面插入
sed -i "${insertNeedModifyRow}a      \    - test.log" $1
  1. uniq表示去除同一个文件里重复的内容(只有相邻的才能去重,不相邻的是不能去重的)
uniq filebeat.yml > $SH_PATH/output.txt
  1. (1)插入的内容中,如果包含传参,则使用单引号’'将参数包裹,否则传参将会作为字符串插进去
    (2)将test.sh这个脚本中以curl开头的字符串替换成后面的一串
    其中c\表示将当前sed查找到的一行全部替换成我们指定的TEXT
sed -i '/curl*/c\curl http://'$ip':'$port'/${time} -X DELETE' test.sh
  1. 统计install.log中包含running的行数,其中wc -l表示统计行数
count=`grep -o 'running' $SH_PATH/install.log | wc -l`
  1. 识别用户输入了啥,-p表示设置提示信息
read -p "现在需要你输入,输入Y/N:" result
echo "你输入的为: $result"
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值