目 录
linux shell 切换用户并执行命令
# su - 【用户名】 -c "要执行的命令"
su - username -c "source ~/.bash_profile " ;
# 切换用户只执行一条命令的可以用:
su - oracle -c command
# 切换用户执行一个shell文件可以用
su - oracle -s /bin/bash shell.sh
参考1:Linux Shell脚本中实现切换用户并执行命令操作
参考2:linux shell 切换用户并执行命令
一键安装postgre的时候遇到的问题
linux统计字符串长度
方法一
len=${#character}
方法二
len=$character|wc -m #用这种方法长度会多一,多了最后的空格
方法三
len=
(
e
x
p
r
l
e
n
g
t
h
"
(expr length "
(exprlength"character")
Linux截取字符串
# 从 string 字符串的左边第 start 个字符开始,向右截取 length 个字符。
${string: start :length}
# 从 string 字符串的左边第 start 个字符开始截取,直到最后。
${string: start}
具体使用的例子,获取mysql安装的密码,91:103字符
password=`grep "password" /var/log/mysqld.log | head -n 1`
install_passwd=${password:91:103}
echo "install_passwd: ${NEW_PASSWORD}"
awk
指定分隔符,例如使用","分割
awk -F, '{print $1,$2}' log.txt
使用; 分割
grep "password" /var/log/mysqld.log |head -n 1 | awk -F : '{cmd="echo "$4; system(cmd)}'
sed
sed的替换
# -i参数表示修改文件内容
# 替换dks.txt文本中old为new
# sed -i 's#old#new#g' ${filename}
sed -i 's/Search_String/Replacement_String/g' Input_File
sed同时替换多个变量
# -i参数表示修改文件内容
sed 's/!/\\!/g; s/</\\</g;; s/>/\\>/g; s/-/\\-/g' password.txt
sed查看文件内容
# 统计a.txt 行数
wc -l ${filename}
# 查看文件a.txt的第190行到196行,
sed -n '190,196p' ${filename}
# 如果查看某一行用
sed -n '190,1p' ${filename}
sed 删除问题内容
# 删除文件的最后一行
sed -i '$d' ${filename}
# 删除第 N 行的命令格式
sed 'Nd' ${filename}
# 删除连续的行,例如删除从 5 到 7 行 的内容
sed '5,7d' sed-demo.txt
# 例如删除第 1 、第 5 、第 9 和最后一行
sed '1d;5d;9d;$d' ${filename}
# 删除包含特定字符的行,要删除示例文件中的包含 System 这个单词的行内容
sed '/System/d' sed-demo.txt
sed在匹配行后面添加一行
a 追加内容 sed ‘/匹配词/a\要加入的内容’ example.file(将内容追加到匹配的目标行的下一行位置)
i 插入内容 sed ‘/匹配词/i\要加入的内容’ example.file 将内容插入到匹配的行目标的上一行位置)
# 1、删除指定行的上一行
sed -i -e :a -e '$!N;s/.*\n\(.*ServerName abc.com\)/\1/;ta' -e 'P;D' $file
# 2、删除指定字符串之间的内容
sed -i '/ServerName abc.com/,/\/VirtualHost/d' $file
#添加到文件开头,i 指的是添加到对应行的前面
sed "1 i ADD A NEW LINE" a.txt
# 添加到文件尾部,a 指的是添加到对应行的后面
sed "$ a ADD A NEW LINE" a.txt