配菜拼盘(4)——Shell脚本

好久不见~~ 

今天新的分享来喽!!

傻瓜笔记,包你看懂~

1. sed使用方法

sed所有命令使用不加 -i 选项不修改源文件

替换
    
① sed 's/str1/str2/' file.txt    #全局替换
        #在变量file中查找返回str字符串所在的一行内容并输出行号
        grep -n 'str' $file

    ② sed '/1s/str1/str2/' file.txt    #替换第1行
    ③ sed "1,3s/str1/str2" file.txt
    ④ sed "/^[hH]/s/e/E/g" file.txt    #全局替换以h或H开头的行e替换为E 
    ⑤ sed "s/.$/end/" file.txt        #全局替换最后一个字符为end
      sed "1s/.$/end/" file.txt        #第一行替换
      sed "s/..$/end/" file.txt        #全局替换最后两个字符为end
    ⑥ sed '1chello' file.txt        #第一行替换为hello

增加
  
 ① sed '2ihello' file.txt        #第二行的上一行插入 i上一行
    ② sed '1ahello' file.txt        #第一行的下一行插入 a下一行
      sed '1a hello' file.txt
      sed '1a\hello' file.txt
    ③ sed '$ahello' file.txt        #在最后一行后插入
    ④ sed '/hello/a123' file.txt    #向所有包括hello的行后一行插入
    ⑤ sed '1ahello\
    > world' file.txt                #插入多行 

删除
    ① sed '/^$/d' file.txt            #删除空行
    ② sed '2d' file.txt                #删除第二行
    ③ sed '2,$d' file.txt            #删除2到最后一行
    ④ sed '/^hello/!d' file.txt        #删除除了以hello开头的一行以外的内容
    ⑤ '^a/'d以a删除开始行 's/a$//'以a终止行替换为空 '/a/d'查找到的数据所在行删除 

查找输出
  
 ① sed -n '/hello/p' file.txt    #-n只输出该行 //sed -n '1p' #输出第一行
    ② sed '/hello/!p' file.txt         #输出除了包括hello的行
    ③ sed -n 's/e.*$//p' file.txt    #获得e字符前边的内容 
      #e到最后一个字符替换为空 -n p打印修改行的内容 只剩e前边的内容 

读写
 
   ① sed -n '/hello/w new.txt' file.txt    #从file.txt中找到hello信息行写到new.txt
    ② sed '/hello/r add.txt' file.txt        #在file.txt中查找到的hello行后一行开始插入add.txt内容 

 #-i选项 是否修改原文件
    sed -i "3s/str1/str2" file.txt    #-i 选项 将改变源文件内容 将file.txt文件中3行的str1替换为str2
    #-e选项 多点同时编辑
    sed -e 's/hello/Hello/g' -e 's/world/World/g' file.txt    #多点编辑 同时替换
    #-n仅显示处理后的结果

2.  if使用方法

#判定str是否为空
    if [ $str1 ]; then
        echo $str1 
    fi
    
    if [-f /home/a.txt]; then  
    shell脚本中if的选项“-e,-d,-f”
    文件表达式
    -e filename 如果 filename存在,则为真
    -d filename 如果 filename为目录,则为真 
    -f filename 如果 filename为常规文件,则为真
    -L filename 如果 filename为符号链接,则为真
    -r filename 如果 filename可读,则为真 
    -w filename 如果 filename可写,则为真 
    -x filename 如果 filename可执行,则为真
    -s filename 如果文件长度不为0,则为真
    -h filename 如果文件是软链接,则为真
    filename1 -nt filename2 如果 filename1比 filename2新,则为真。
    filename1 -ot filename2 如果 filename1比 filename2旧,则为真。
    
    if [ $str ]; then
    #str非空为真
    
    #变量不存在或为空判断为真
    if [ -z "$hkxdr_pid" ]
    then
    ***
    fi 

3. awk使用方法 

VAR=1-2-3-4
    ① echo $VAR | awk -F "-" '{print $4}'    #以-分割 $加第几段(从1开始) 默认分隔符空格 

4. 重定向输出 

重定向输出到空 不在终端输出
    > /dev/null 2>&1 
    > /dev/null 2>&1 & 

5. 权限 

pkexec [--用户用户名]程序[参数...]
   pkexec允许授权用户以其他用户身份执行程序。如果未指定用户名,则程序将以管理超级用户root 身份执行。
   当sudo su无法切换root权限 尝试使用pkexec以root权限执行命令
   #在root账户使用普通权限打开文件
   pkexec --user 用户名 vi /etc/ld.so.preload    //只读权限
   pkexec vi /etc/ld.so.preload                //读写权限
   pkexec sudo dpkg -i a.deb  


Shell示例 

#!/bin/sh

# 获取 ps 命令输出的进程信息
ps_output=$(ps -ef | grep -w dpkg | grep deb)

echo "ps_output = $ps_output"

# 逐行处理 ps_output
echo "$ps_output" | while IFS= read -r line; do
    # 使用空格作为分隔符,将每行内容分割为字段
    set -- $line
    
    # 获取最后一个字段
    last_field=$NF
    
    echo "最后的数据字段内容: $last_field"
done
循环执行程序

#!/bin/bash

while true; do
    # 启动进程
    ./可执行程序 &
    
    # 等待进程退出 $!捕获最后一个在后台启动的进程的进程ID
    wait $!
    
    # 等待一段时间后再次启动进程
    sleep 1
done

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值