sed是一种流编辑器,它是文本处理中非常中的工具,能够完美的配合正则表达式使用,功能不同凡响。处理时,把当前处理的行存储在临时缓冲区中,称为“模式空间”(pattern space),接着用sed命令处理缓冲区中的内容,处理完成后,把缓冲区的内容送往屏幕。接着处理下一行,这样不断重复,直到文件末尾。文件内容并没有 改变,除非你使用重定向存储输出。Sed主要用来自动编辑一个或多个文件;简化对文件的反复操作;编写转换程序等。 命令格式 sed [options] 'command' file(s) sed [options] -f scriptfile file(s) 选项 -e<script>或--expression=<script>:以选项中的指定的script来处理输入的文本文件; -f<script文件>或--file=<script文件>:以选项中指定的script文件来处理输入的文本文件; -h或--help:显示帮助; -n或--quiet或——silent:仅显示script处理后的结果; -V或--version:显示版本信息。 -i ∶插入, i 的后面可以接字串 sed命令 a\ 在当前行下面插入文本。 i\ 在当前行上面插入文本。 c\ 把选定的行改为新的文本。 d 删除,删除选择的行。 D 删除模板块的第一行。 s 替换指定字符 h 拷贝模板块的内容到内存中的缓冲区。 H 追加模板块的内容到内存中的缓冲区。 g 获得内存缓冲区的内容,并替代当前模板块中的文本。 G 获得内存缓冲区的内容,并追加到当前模板块文本的后面。 l 列表不能打印字符的清单。 n 读取下一个输入行,用下一个命令处理新的行而不是用第一个命令。 N 追加下一个输入行到模板块后面并在二者间嵌入一个新行,改变当前行号码。 p 打印模板块的行。 P(大写) 打印模板块的第一行。 q 退出Sed。 b lable 分支到脚本中带有标记的地方,如果分支不存在则分支到脚本的末尾。 r file 从file中读行。 t label if分支,从最后一行开始,条件一旦满足或者T,t命令,将导致分支到带有标号的命令处,或者到脚本的末尾。 T label 错误分支,从最后一行开始,一旦发生错误或者T,t命令,将导致分支到带有标号的命令处,或者到脚本的末尾。 w file 写并追加模板块到file末尾。 W file 写并追加模板块的第一行到file末尾。 ! 表示后面的命令对所有没有被选定的行发生作用。 = 打印当前行号码。 # 把注释扩展到下一个换行符以前。 sed替换标记 g 表示行内全面替换。 p 表示打印行。 w 表示把行写入一个文件。 x 表示互换模板块中的文本和缓冲区中的文本。 y 表示把一个字符翻译为另外的字符(但是不用于正则表达式) \1 子串匹配标记 & 已匹配字符串标记 sed元字符集 ^ 匹配行开始,如:/^sed/匹配所有以sed开头的行。 $ 匹配行结束,如:/sed$/匹配所有以sed结尾的行。 . 匹配一个非换行符的任意字符,如:/s.d/匹配s后接一个任意字符,最后是d。 * 匹配0个或多个字符,如:/*sed/匹配所有模板是一个或多个空格后紧跟sed的行。 [] 匹配一个指定范围内的字符,如/[ss]ed/匹配sed和Sed。 [^] 匹配一个不在指定范围内的字符,如:/[^A-RT-Z]ed/匹配不包含A-R和T-Z的一个字母开头,紧跟ed的行。 \(..\) 匹配子串,保存匹配的字符,如s/\(love\)able/\1rs,loveable被替换成lovers。 & 保存搜索字符用来替换其他字符,如s/love/**&**/,love这成**love**。 \< 匹配单词的开始,如:/\<love/匹配包含以love开头的单词的行。 \> 匹配单词的结束,如/love\>/匹配包含以love结尾的单词的行。 x\{m\} 重复字符x,m次,如:/0\{5\}/匹配包含5个0的行。 x\{m,\} 重复字符x,至少m次,如:/0\{5,\}/匹配至少有5个0的行。 x\{m,n\} 重复字符x,至少m次,不多于n次,如:/0\{5,10\}/匹配5~10个0的行。 sed实际用例 #替换oldboy.txt中所有的oldboy变为oldboy_python #此时结果输出到屏幕,不会写入到文件 sed 's/oldboy/oldboy_python/' /tmp/oldboy.txt #使用选项-i,匹配每一行第一个oldboy替换为oldboy_python,并写入文件 sed -i 's/oldboy/oldboy_python/' /tmp/oldboy.txt #使用替换标记g,同样可以替换所有的匹配 sed -i 's/book/books/g' /tmp/oldboy.txt #删除文件第二行 sed -i '2d' /tmp/oldboy.txt #删除空白行 sed -i '/^$/d' /tmop/oldboy.txt #删除文件第二行,到末尾所有行 sed '2,$d' /tmp/oldboy.txt #显示10-30行 -p --print -n --取消默认输出 sed -n '10,30p' /tmp/oldboy.txt
别名alias命令
创建目录
mkdir 目录名 -----------创建目录
mkdir -p a/b c/d --------递归创建a/b c/d
mkdir -p test/{a,b,c,d} ---递归创建test/a,b,c,d四个目录
mkdir -p a/b/c/d ---------递归创建文件夹a/b/c/d
cd 目录名 -----------进入目录
查看目录
ls 目录名
切换目录
cd 目录名
查看当前目录
pwd
vim
vi 或 vim(常用) 命令进入文件,需要输入 a / i 进入编辑模式,然后输入文本,输入完成后按下ESC键,回到命令模式,输入:wq! 强制保存退出
w : 写入
q : 退出
! : 强制
:x : 保存退出
:q : 不保存退出
:q! : 不保存强制退出
查看文件内容
cat 文件名 ----------------查看文件
cat -n 文件名 ----------------查看文件,显示行号
cat >>文件绝对路径<< EOF 内容 EOF --------追加内容到文件
more命令
more命令用于查看内容较多的文本,会以百分比的形式告知已经看到了多少,
more 文件名 -----------按下空格是翻页
按下b是上一页
回车键向下读取内容
linux快捷键
tab键 -------------------自动补全命令/文件名/目录名
ctrl + l -------------------清理终端显示
clear / cls --------------------清理终端显示
Ctrl + c --------------------终止当前操作
echo命令
echo 字符串 / 变量 ----------------在终端打印字符串或输出变量值
echo $PATH ----------------查看环境变量
特殊符号
>> 追加重定向,追加内容,相当于python中的a
> 重定向,覆盖写入,相当于python中的w
< 输入重定向
<< 将输入结果输入重定向
复制(拷贝)命令
移动a1 文件到 /tmp目录下
cp a1.txt /tmp/
移动a1文件到/tmp目录下,并改名为a2
cp a1.txt /tmp/a2.txt
cp -r --------------递归,复制目录及目录的子孙后代
cp -p --------------复制文件,同时保持文件属性不变
移动命令
mv /home/a1.txt /tmp/ ---------------把a1文件移动到/tmp下
mv a1.txt a2.txt ---------------把a1文件改名为a2
删除命令
rm 文件名 ---------------------有提示,如果确定删除输入y
rm -rf 文件名 ---------------------不需要提示,强制删除
参数 :
-i : 需要删除确认
-f : 强制删除
-r : 递归删除目录和内容
使用rm命令,最好跟快照结合,以免无法恢复数据
查找命令
find 目录 文件类型 文件名
参数 :
-name : 按照文件名查找文件
-type : 查找某个类型的文件:
f : 普通文件
d : 目录
b : 块设备文件
c : 字符设备文件
p : 管道文件
l : 符号链接文件
s : socket文件
示例:
#找出/tmp所有以 .txt 结尾的文件
find /tmp/ -type f -name "*.txt"
#找到/etc下所有名字以host开头的文件
find /etc -name 'host*'
#找到/opt上一个名为settings.py
find /opt -name 'settings.py'
管道命令
linux 提供的管道符 " | " 将两条命令隔开,管道符左边命令的输出会作为管道符右边命令的输入
#找到/tmp目录下所有txt文件
ls /tmp|grep '.txt'
grep :
是一种强大的文本搜索工具,可以使用震泽表达式,并把匹配的行打印出来
查找内容 : grep "我要找什么" /tmp/oldboy.txt
排除要查找的内容 : grep -v "我要找什么 /tmp/oldboy.txt
示例 :
找出/etc/passwd所有不允许登录的用户
grep /sbin/nologin /etc/passwd
找到/etc/passwd的所有与mysql有关行
cat /etc/passwd |grep 'mysql'
head , tail 命令 :
#查看前两行 head -2 /tmp/oldboy.txt #查看后两行 tail -2 /tmp/oldboy.txt
#显示文件10-30行
head -30 /tmp/oldboy.txt |tail -21
别名alias命令
#查看系统别名 alias
默认别名
alias cp='cp -i'
alias egrep='egrep --color=auto'
alias fgrep='fgrep --color=auto'
alias grep='grep --color=auto'
alias l.='ls -d .* --color=auto'
alias ll='ls -l --color=auto'
alias ls='ls --color=auto'
alias mv='mv -i'
alias rm='rm -i'
alias which='alias | /usr/bin/which --tty-only --read-alias --show-dot --show-tilde'
别名作用是:
我们在linux中使用cp时候相当于执行了cp -i
-i:删除已有文件或目录之前先询问用户;
#别名用比较危险的操作,防止你犯错
which命令
which命令用于查找并显示给定命令的绝对路径,环境变量PATH中保存了查找命令时需要遍历的目录。
which指令会在环境变量$PATH设置的目录里查找符合条件的文件。
也就是说,使用which命令,就可以看到某个系统命令是否存在,以及执行的到底是哪一个位置的命令。
which python -------------python命令在哪
scp命令
scp命令用于linux之间复制文件和目录
实例:
#传输本地文件到远程地址 scp 本地文件 远程用户名@远程ip:远程文件夹/ scp 本地文件 远程用户名@远程ip:远程文件夹/远程文件名
参数 :
-r :递归复制整个目录 -v:详细方式输出 -q:不显示传输进度条 -C:允许压缩
传输本地文件到远程地址 :
scp 本地文件 远程用户名@远程ip:远程文件夹/ scp 本地文件 远程用户名@远程ip:远程文件夹/远程文件名
复制远程文件到本地 :
scp root@192.168.1.155:/home/oldboy.txt /tmp/oldboy.txt scp -r root@192.168.1.155:/home/oldboy /home/
du命令 :
du会显示指定的目录或文件所占用的磁盘空间
du 参数 文件或目录
参数 :
-s 显示总计
-h 以K , M , G 为单位显示,可读性强
top 命令 :
top命令用于动态监控进程活动与系统负载等信息
wget 命令 :
wget命令用于在终端下载网络文件
wget 参数 下载地址
开关机命令 :
reboot 重启机器
poweroff 关闭系统
过滤出文件的空白行和注释行 :
grep -v "^#" redis.conf | grep -v "^$"
浙公网安备 33010602011771号