好久不见~~
今天新的分享来喽!!
傻瓜笔记,包你看懂~
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