linux搜索和替换命令,linux索引命令

2019-11-15 linux的替换:sed -i "s/查找字段/替换字段/g"

sed -i "s/查找字段/替换字段/g"

克拉玛依区网站建设公司创新互联公司,克拉玛依区网站设计制作,有大型网站制作公司丰富经验。已为克拉玛依区上千家提供企业网站建设服务。企业网站搭建\成都外贸网站建设公司要多少钱,请找那个售后服务好的克拉玛依区做网站的公司定做!

例如:test.txt包括:

a;b

c;d

使用命令把;替换成换行符:

而后,test.txt变为:

a

b

c

d

linux之文本内容替换命令sed

sed简介:流编辑工具,用来对文本进行过滤与替换操作。

sed流程:sed通过一次仅读取一行内容来对某些指令进行处理后输出。

1、sed通过文件或管道读取文件内容,但sed默认并不直接修改源文件,而是将读入的内容复制到缓冲区中,称之为模式空间。

2、所有的指令操作都是在模式空间找那个进行

3、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

command2

command3

}

sed的基本工作方式是:

sed的替换命令s:

1、全局替换 : s/old/new/g ,其中g为全局替换,用于替换所有出现的次数; /如果和正则匹配的内容冲突可以使用其他符号,如 : s@old@new@g

2、标志位

为什么要有多行模式: 配置文件一般有单行出现,但也有使用json或XML格式的配置文件,为多行出现。

多行模式处理命令N、D、P

linux服务器文本关键字搜索替换

1、vi命令下的查找和替换

1.1 vi下的查找

/helloEnter :向下查找hello匹配字符串

?helloEnter:向上查找hello匹配字符串

使用了查找命令之后,使用如下两个键快速查找:

n:按照同一方向继续查找

N:按照反方向查找

hello是需要匹配的字符串,例如:

/nameEnter      #查找name

/nameEnter    #查找name单词(注意前后的空格)

除此之外,hello还可以使用一些特殊字符,包括(/、^、$、*、.),其中前三个这两个是vi与vim通用的,“/”为转义字符。

/^nameEnter    #查找以name开始的行

/name$Enter    #查找以name结束的行

//^nameEnter    #查找^name字符串

1.2 vi下的替换

: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/

2.sed和grep配合

命令: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

3.find命令查找和替换

命令格式: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只要知道这些就够了上

知道怎么增删改查就算是入门了。因为这是最常用的。

在使用linux时,经常需要进行文件查找。其中查找的命令主要有find和grep。两个命令是有区别的。

区别:(1)find命令是根据文件的属性进行查找,如文件名,文件大小,所有者,所属组,是否为空,访问时间,修改时间等。

          (2)grep是根据文件的内容进行查找,会对文件的每一行按照给定的模式(patter)进行匹配查找。

一.find命令

基本格式:find  path expression

1.按照文件名查找

(1)find / -name httpd.conf#在根目录下查找文件httpd.conf,表示在整个硬盘查找

(2)find /etc -name httpd.conf#在/etc目录下文件httpd.conf

(3)find /etc -name '*srm*'#使用通配符*(0或者任意多个)。表示在/etc目录下查找文件名中含有字符串‘srm’的文件

(4)find . -name 'srm*' #表示当前目录下查找文件名开头是字符串‘srm’的文件

2.按照文件特征查找

(1)find / -amin -10 # 查找在系统中最后10分钟访问的文件(access time)

(2)find / -atime -2 # 查找在系统中最后48小时访问的文件

(3)find / -empty # 查找在系统中为空的文件或者文件夹

(4)find / -group cat # 查找在系统中属于 group为cat的文件

(5)find / -mmin -5 # 查找在系统中最后5分钟里修改过的文件(modify time)

(6)find / -mtime -1 #查找在系统中最后24小时里修改过的文件

(7)find / -user fred #查找在系统中属于fred这个用户的文件

(8)find / -size +10000c#查找出大于10000000字节的文件(c:字节,w:双字,k:KB,M:MB,G:GB)

(9)find / -size -1000k #查找出小于1000KB的文件

3.使用混合查找方式查找文件

参数有: !,-and(-a),-or(-o)。

(1)find /tmp -size +10000c -and -mtime +2 #在/tmp目录下查找大于10000字节并在最后2分钟内修改的文件

  (2)find / -user fred -or -user george #在/目录下查找用户是fred或者george的文件文件

  (3)find /tmp ! -user panda#在/tmp目录中查找所有不属于panda用户的文件

二、grep命令

   基本格式:find  expression

  1.主要参数

[options]主要参数:

-c:只输出匹配行的计数。

-i:不区分大小写

-h:查询多文件时不显示文件名。

-l:查询多文件时只输出包含匹配字符的文件名。

-n:显示匹配行及行号。

-s:不显示不存在或无匹配文本的错误信息。

-v:显示不包含匹配文本的所有行。

pattern正则表达式主要参数:

\: 忽略正则表达式中特殊字符的原有含义。

^:匹配正则表达式的开始行。

$: 匹配正则表达式的结束行。

\:从匹配正则表达 式的行开始。

\:到匹配正则表达式的行结束。

[ ]:单个字符,如[A]即A符合要求 。

[ - ]:范围,如[A-Z],即A、B、C一直到Z都符合要求 。

.:所有的单个字符。

* :有字符,长度可以为0。

2.实例 

(1)grep 'test' d*#显示所有以d开头的文件中包含 test的行

(2)grep ‘test’ aa bb cc #显示在aa,bb,cc文件中包含test的行

(3)grep ‘[a-z]\{5\}’ aa #显示所有包含每行字符串至少有5个连续小写字符的字符串的行

(4)grep magic /usr/src#显示/usr/src目录下的文件(不含子目录)包含magic的行

(5)grep -r magic /usr/src#显示/usr/src目录下的文件(包含子目录)包含magic的行

(6)grep -w pattern files :只匹配整个单词,而不是字符串的一部分(如匹配’magic’,而不是’magical’),

查看文件内容的命令:

cat    由第一行开始显示内容,并将所有内容输出

tac    从最后一行倒序显示内容,并将所有内容输出

more    根据窗口大小,一页一页的现实文件内容

less    和more类似,但其优点可以往前翻页,而且进行可以搜索字符

head    只显示头几行

tail    只显示最后几行

nl      类似于cat -n,显示时输出行号

tailf  类似于tail -f

1.cat 与 tac

cat的功能是将文件从第一行开始连续的将内容输出在屏幕上。但是cat并不常用,原因是当文件大,行数比较多时,屏幕无法全部容下时,只能看到一部分内容。

cat语法:cat [-n]  文件名 (-n : 显示时,连行号一起输出)

tac的功能是将文件从最后一行开始倒过来将内容数据输出到屏幕上。我们可以发现,tac实际上是cat反过来写。这个命令也不常用。

tac语法:tac 文件名。

2.more和less(常用)

more的功能是将文件从第一行开始,根据输出窗口的大小,适当的输出文件内容。当一页无法全部输出时,可以用“回车键”向下翻行,用“空格键”向下翻页。退出查看页面,请按“q”键。另外,more还可以配合管道符“|”(pipe)使用,例如:ls -al | more

more的语法:more 文件名

Enter 向下n行,需要定义,默认为1行;

Ctrl f 向下滚动一屏;

空格键 向下滚动一屏;

Ctrl b 返回上一屏;

= 输出当前行的行号;

:f 输出文件名和当前行的行号;

v 调用vi编辑器;

! 命令 调用Shell,并执行命令;

q 退出more

less的功能和more相似,但是使用more无法向前翻页,只能向后翻。

less可以使用【pageup】和【pagedown】键进行前翻页和后翻页,这样看起来更方便。

less的语法:less 文件名

less还有一个功能,可以在文件中进行搜索你想找的内容,假设你想在passwd文件中查找有没有weblogic字符串,那么你可以这样来做:

[root@redhat etc]# less passwd

然后输入:

/weblogic

回车

此时如果有weblogic字符串,linux会把该字符已高亮方式显示。

退出查看页面,请按“q”键。

3.head和tail

head和tail通常使用在只需要读取文件的前几行或者后几行的情况下使用。head的功能是显示文件的前几行内容

head的语法:head [n number] 文件名 (number 显示行数)

tail的功能恰好和head相反,只显示最后几行内容

tail的语法:tail [-n number] 文件名

4.nl

nl的功能和cat -n一样,同样是从第一行输出全部内容,并且把行号显示出来

nl的语法:nl 文件名

1、vi

vi 1.txt 会直接创建并打开一个文件1.txt

2、touch

touch的作用是更改一个文件或目录的时间。touch 2.txt 如果2.txt不存在,则创建空文件2.txt

3、echo

echo “abcd” 3.txt 可以直接创建文件3.txt并将abcd写入。

4、less 、more 、cat

三者都是将文件内容输出到标准输出,其中less和more可以分页显示,cat是显示全部。

三者可以根据已经存在的文件创建新的文件。假设已经存在文件1.txt。

cat 1.txt 2.txt

less 1.txt 3.txt

more 1.txt 4.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

vi 编辑器,相当于记事本,有编辑功能,但较弱

vim 复杂的编辑器,相当于windows的 editplus, notepad++ 等

------------------------

步骤:

1、执行 vi world.txt  进入编辑器(默认命令模式),

2、点击a或i进入编辑模式,敲入内容:hello linux world !

3、然后按键盘上的esc键退出编辑模式(进入到命令模式),

4、最后敲冒号:,

5、再敲wq保存并退出。

-------

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搜索和替换命令,linux索引命令
文章分享:http://myzitong.com/article/hsiggp.html