sed -i "s/查找字段/替换字段/g"
例如:test.txt包括:
a;b
c;d
使用命令把;替换成换行符:
而后,test.txt变为:
a
b
c
d
sed流程:sed通过一次仅读取一行内容来对某些指令进行处理后输出.
①.、sed通过文件或管道读取文件内容,但sed默认并不直接修改源文件,而是将读入的内容复制到缓冲区中,称之为模式空间.
sed基本语法格式:
用法:sed[选项]...{脚本指令}[输入文件]...
选项: -version 显示sed版本
-help :显示帮助文档
-n,-quiet,-silent静默输出,默认情况下,sed程序在所有的脚本指令执行完毕后,将自动打印模式空间中的内容.
-e script允许多个脚本指令被执行
-f script-file从文件中读取脚本指令,对编写自动化脚本程序很实用
-i ,-in-place 该选项直接修改源文件
-l N 该选项指定l指令可以输出的行长度,l指令为输出非打印字符.
-posix 禁用GNU sed扩展功能.
-r 在脚本指令中使用扩展正则表达式.
-s,-separate 默认情况下,sed将把输入的多个文件名作为一个长的连续的输入流.而GNU sed则允许把它们当作单独的文件.
-u,-unbuffered 最低限度的缓存输入与输出
a,append表示追加指令;
i,insert表示插入指令;
d,delete表示删除指令;
s,substitution表示替换指令.
sed脚本指令的基本格式是:
[地址,即路径]命令(有些命令仅可以对一行操作,有些可以对多行操作),命令也可以用花括号进行组合,使命令序列可以作用于同一个地址.
address{
command1
}
sed的基本工作方式是:
sed的替换命令s:
为什么要有多行模式: 配置文件一般有单行出现,但也有使用json或XML格式的配置文件,为多行出现.
多行模式处理命令N、D、P
①.、vi命令下的查找和替换
①1 vi下的查找
/helloEnter :向下查找hello匹配字符串
helloEnter:向上查找hello匹配字符串
使用了查找命令之后,使用如下两个键快速查找:
n:按照同一方向继续查找
N:按照反方向查找
hello是需要匹配的字符串,例如:
/nameEnter? ? ? #查找name
/nameEnter? ? #查找name单词(注意前后的空格)
除此之外,hello还可以使用一些特殊字符,包括(/、^、$、*、.),其中前三个这两个是vi与vim通用的,"/"为转义字符.
/^nameEnter? ? #查找以name开始的行
/name$Enter? ? #查找以name结束的行
//^nameEnter? ? #查找^name字符串
:s/name/title/? ? ? ? #替换当前行第一个 name 为 title
:s/name/title/g? ? #替换当前行所有 name 为 title
:n,$s/name/title/? ? #替换第 n 行开始到最后一行中每一行的第一个 name 为 title
:n,$s/name/title/g? ? #替换第 n 行开始到最后一行中每一行所有 name 为 title
#(n 为数字,若 n 为 .,表示从当前行开始到最后一行)
:%s/name/title/? ? ? ? #(等同于 :g/name/s//title/) 替换每一行的第一个 name 为 title
:%s/name/title/g? ? #(等同于 :g/name/s//title/g) 替换每一行中所有 name 为 title
可以使用 #或+ 作为分隔符,此时中间出现的 / 不会作为分隔符
:s#name/#title/#? ? ? ? 替换当前行第一个 name/ 为 title/
:%s+/oradata/apras/+/user01/apras1+ (
使用+ 来 替换 / ): /oradata/apras/替换成/user01/apras1/
命令:sed -i s/yyyy/xxxx/g +grep yyyy -rl --include="*.txt" ./+
作用:将当前目录(包括子目录)中所有txt文件中的yyyy字符串替换为xxxx字符串.其中,
-i 表示操作的是文件,++括起来的grep命令,表示将grep命令的的结果作为操作文件.
s/yyyy/xxxx/表示查找yyyy并替换为xxxx,后面跟g表示一行中有多个yyyy的时候,都替换,而不是仅替换第一个
另外,如果不需要查找子目录,仅需要在当前目录替换,用sed命令就行了,命令如下:sed -i s/xxxx/yyyy/g ./*.txt
命令格式:find -name '要查找的文件名' | xargs perl -pi -e 's|被替换的字符串|替换后的字符串|g'
#查找替换当前目录下包含字符串并进行替换
find -name '*.txt' | xargs perl -pi -e 's|江苏|上海|g'
#递归查找替换
find . -type f -name '*.html' | xargs perl -pi -e 's|苏州|上海|g'
知道怎么增删改查就算是入门了.因为这是最常用的.
在使用linux时,经常需要进行文件查找.其中查找的命令主要有find和grep.两个命令是有区别的.
区别:(1)find命令是根据文件的属性进行查找,如文件名,文件大小,所有者,所属组,是否为空,访问时间,修改时间等.
一.find命令
基本格式:find? path expression
①按照文件名查找
(1)find / -name httpd.conf#在根目录下查找文件httpd.conf,表示在整个硬盘查找
(1)find / -amin -10 # 查找在系统中最后10分钟访问的文件(access time)
参数有: !,-and(-a),-or(-o).
第二段:grep命令
基本格式:find? expression
①主要参数
[options]主要参数:
-c:只输出匹配行的计数.
-i:不区分大小写
-h:查询多文件时不显示文件名.
-l:查询多文件时只输出包含匹配字符的文件名.
-n:显示匹配行及行号.
-s:不显示不存在或无匹配文本的错误信息.
-v:显示不包含匹配文本的所有行.
pattern正则表达式主要参数:
\: 忽略正则表达式中特殊字符的原有含义.
^:匹配正则表达式的开始行.
$: 匹配正则表达式的结束行.
\:从匹配正则表达 式的行开始.
\:到匹配正则表达式的行结束.
[ ]:单个字符,如[A]即A符合要求 .
[ - ]:范围,如[A-Z],即A、B、C一直到Z都符合要求 .
.:所有的单个字符.
* :有字符,长度可以为0.
(1)grep 'test' d*#显示所有以d开头的文件中包含 test的行
查看文件内容的命令:
cat? ? 由第一行开始显示内容,并将所有内容输出
tac? ? 从最后一行倒序显示内容,并将所有内容输出
more? ? 根据窗口大小,一页一页的现实文件内容
less? ? 和more类似,但其优点可以往前翻页,而且进行可以搜索字符
head? ? 只显示头几行
tail? ? 只显示最后几行
nl? ? ? 类似于cat -n,显示时输出行号
tailf? 类似于tail -f
①cat 与 tac
cat的功能是将文件从第一行开始连续的将内容输出在屏幕上.但是cat并不常用,原因是当文件大,行数比较多时,屏幕无法全部容下时,只能看到一部分内容.
cat语法:cat [-n]? 文件名 (-n : 显示时,连行号一起输出)
tac的功能是将文件从最后一行开始倒过来将内容数据输出到屏幕上.我们可以发现,tac实际上是cat反过来写.这个命令也不常用.
tac语法:tac 文件名.
more的功能是将文件从第一行开始,根据输出窗口的大小,适当的输出文件内容.当一页无法全部输出时,可以用"回车键"向下翻行,用"空格键"向下翻页.退出查看页面,请按"q"键.另外,more还可以配合管道符"|"(pipe)使用,例如:ls -al | more
more的语法:more 文件名
Enter 向下n行,需要定义,默认为1行;
Ctrl f 向下滚动一屏;
空格键 向下滚动一屏;
Ctrl b 返回上一屏;
= 输出当前行的行号;
:f 输出文件名和当前行的行号;
! 命令 调用Shell,并执行命令;
q 退出more
less的功能和more相似,但是使用more无法向前翻页,只能向后翻.
less可以使用【pageup】和【pagedown】键进行前翻页和后翻页,这样看起来更方便.
less的语法:less 文件名
less还有一个功能,可以在文件中进行搜索你想找的内容,假设你想在passwd文件中查找有没有weblogic字符串,那么你可以这样来做:
然后输入:
/weblogic
回车
此时如果有weblogic字符串,linux会把该字符已高亮方式显示.
退出查看页面,请按"q"键.
head和tail通常使用在只需要读取文件的前几行或者后几行的情况下使用.head的功能是显示文件的前几行内容
head的语法:head [n number] 文件名 (number 显示行数)
tail的功能恰好和head相反,只显示最后几行内容
tail的语法:tail [-n number] 文件名
nl的功能和cat -n一样,同样是从第一行输出全部内容,并且把行号显示出来
nl的语法:nl 文件名
①.、vi
vi 1.txt 会直接创建并打开一个文件1.txt
三者都是将文件内容输出到标准输出,其中less和more可以分页显示,cat是显示全部.
三者可以根据已经存在的文件创建新的文件.假设已经存在文件1.txt.
此时创建的文件内容都和1.txt中文件内容相同.
rm -f 文件名
-f? 表示强制
将会强行删除文件,且无提示
功能说明:删除文件或目录.
语法:rm [-dfirv][--help][--version][文件或目录...]
补充说明:执行rm指令可删除文件或目录,如欲删除目录必须加上参数"-r",否则预设仅会删除文件.
参数:
-d或–directory 直接把欲删除的目录的硬连接数据删成0,删除该目录.
-f或–force 强制删除文件或目录.
-i或–interactive 删除既有文件或目录之前先询问用户.
-r或-R或–recursive 递归处理,将指定目录下的所有文件及子目录一并处理.
-v或–verbose 显示指令执行过程.
将目录A重命名为B
mv A B
方法一:
命令是:vi,vim
------------------------
步骤:
-------
wq解释为:write quite
不想保存,q
强制退出 q!
方法二
对于简单的,使用 echo 打印命令.
echo "字符串",功能:在屏幕上打印 字符串.
用 echo? 或 echo ? 导入到文件里.
echo 'hello linux' /data/hello.txt? 这个在企业里很常用:单行内容追加到文件结尾.
一个大于号,是覆盖重定向,会清除文件里的所有以前数据,增加新数据.
两个大于号,是追加重定向,文件结尾加入内容,不会删除已有文件的内容.
方法三:特殊用法使用cat
cat/data/hello.txt
hello world world
EOF
----------
EOF要成对出现,且是增加的内容里没有的,EOF可以被任意成对内容替换.
cat 是查看文件内容的命令
以上就是土嘎嘎小编为大家整理的linux搜索和替换命令相关主题介绍,如果您觉得小编更新的文章只要能对粉丝们有用,就是我们最大的鼓励和动力,不要忘记讲本站分享给您身边的朋友哦!!