linux-学习教程-linux文件处理

cat:用来显示文本文件的内容,也可以把几个文件内容附加到另一个文件中,即连接合并文件
选项功能
-n对输出的所有行进行编号
- A注释行也会显示出来
-b只对空行进行编号
- s当遇到有连续2行以上的空白行时,就替换为1行的空白行

两个文件合并:将文件 file1.txt 和 file2.txt 的内容合并后输出到文件 file3.txt 中

cat file1.txt file2.txt > file3.txt

more:分页显示文本文件的内容,使用者可以逐页阅读文件中内容
Head:可以显示指定文件前若干行的文件内容,默认显示前10行

head -n 10 文件名 (查看文件的前10行)

Less:跟more类似,用来浏览文本文件的内容,不同之处,使用more命令浏览文件时,只能不断向后翻看,而使用less,既可以向后翻看,也能向前翻看。
Tail:跟head命令正好相反,用来查看文件末尾的数据

Tail -n 10 文件名 (查看文件的最后10行)

Tail -f 文件名(监听文件的新増内容) 终止输出,按【Ctrl+c】键中断 tail 命令即可


linux三剑客

Gerp是文本搜索工具
选项功能
c*将匹配0个(即空白)或多个字符c(c)为任一字符
.将匹配任何一个字符,且只能是一个字符
[xyz]匹配方括号中的任意一个字符
[^xyz]匹配除方括号字符外的所有字符
^锁定行的开头
$锁定行的结尾
-c仅列出文件中包含模式的行数
-i忽略模式中的字母大小写
-I列出带有匹配行的文件名
-n在每一行的最前面列出行号
-v列出没有匹配模式的行
-w把表达式当做一个完整的单字符来搜寻,忽略那些部分匹配的行

常用grep实例

(1)多个文件查询

grep “sort” *.doc #见文件名的匹配

(2)行匹配:输出匹配行的计数

grep -c “48” data.doc #输出文档中含有48字符的行数

(3)显示匹配行和行数

grep -n “48” data.doc #显示所有匹配48的行和行号

(4)显示非匹配的行

grep -vn “48” data.doc #输出所有不包含48的行

(4)显示非匹配的行

grep -vn “48” data.doc #输出所有不包含48的行

(5)大小写敏感

grep -i “ab” data.doc #输出所有含有ab或Ab的字符串的行

正则表达式的应用

(1)正则表达式的应用 (注意:最好把正则表达式用单引号括起来)

grep ‘[239].’ data.doc #输出所有含有以2,3或9开头的,并且是两个数字的行

(2)不匹配测试

grep ‘[48]’ data.doc #不匹配行首是48的行

(3)使用扩展模式匹配

grep -E ‘219|216’ data.do

sed命令:根据脚本命令来处理文本文件中的数据
选项功能
-e会将其后跟的脚本命令添加到已有的命令中
-f会将其后文件中的脚本命令添加到已有的命令中
-n默认情况下,sed 会在所有的脚本指定执行完毕后,会自动输出处理后的内容,而该选项会屏蔽启动输出,需使用 print 命令来完成输出。
-i会直接修改源文件,要慎用
n1~512 之间的数字,表示指定要替换的字符串出现第几次时才进行替换,例如,一行中有 3 个 A,但用户只想替换第二个 A,这是就用到这个标记;
g对数据中所有匹配到的内容进行替换,如果没有 g,则只会在第一次匹配成功时做替换操作。例如,一行数据中有 3 个 A,则只会替换第一个 A;
p会打印与替换命令中指定的模式匹配的行。此标记通常与 -n 选项一起使用。
w将缓冲区中的内容写到指定的file文件中
&用正则表达式匹配的内容进行替换
\n匹配第n个子串,该子串之前在pattern中用()指定
\转义

-p标记会输出修改过的行,将两者匹配使用的效果就是只输出被替换命令修改过的行

-w标记会将匹配后的结果保存到指定文件中

-d 删除脚本

-a 表示在指定行的后面附件一行

- i 表示再指定行的前面插入一行

-c 表示将指定行中的所有内容,替换成选项后面的字符串

-r 将一个独立文件的数据插入到当前数据流的指定位置

-q 退出脚本命令

-i 参数 把修改保存到文件,不加该参数,仅仅是把修改输出到屏幕

s代表第几行,g代表第几个

sed “3s/my/your/g” pets.txt 只替换第三行符合的文本

sed “3,6s/my/your/g” pets.txt 替换3到6行符合的文本

sed ‘s/s/S/1’ my.txt 只替换每一行的第一个s

sed ‘s/s/S/2’ my.txt 只替换每一行的第二个s

sed ‘s/s/S/g’ my.txt 替换每一行中的所有s

sed ‘s/s/S/3g’ my.txt 只替换每行的第3个以后的s

字符替换

sed -i “s/要被取代的字串/新的字串/g” 文件名(s代表所有行,g代表所有个)

删除匹配行

sed -i ‘/匹配的内容/d’ 文件名(d代表删除)

删除第几行

sed -i ‘2,5d’ 文件名 删除2、5行

Sed -I ‘/2/,/5/d’ 文件名 删除2-5行

将一个新行插入到数据流第三行前

Sed '3i\

Sed '3a\

想将一个多行数据添加到数据流中,只需对要插入或附件的文本中的每一行末尾(除最后一行)添加反斜线即可

在这里插入图片描述

只输出被替换命令修改过的行

Sed -n “s/test/test1/p” 文件名

将匹配后的结果保存到指定文件中

Sed “s/test/test1/w 新文件名” 文件名

删除第三行开始所有的内容

Sed ‘3,$d’ 文件名

替换第三行的文本内容

Sed '3c\

转换脚本,在文本行中找到的所有指定字符自动进行转换,而不会考虑他们出现的位置

echo “This 1 is a test of 1 try.” | sed ‘y/123/456/’

将filename文件中的内容插入到address指定行的后面

Sed ‘3r date 13.txt’ data.txt

将指定文件中的数据插入到数据流的末尾,可以使用$地址符

Sed ‘$r data 13.txt’ data.txt

打印第2行之后,就退出

Sed ‘2q’ 文件名

awk:文本数据处理工具,注意只能使用单引号

shell中单引号里面没有变量 ,双引号里面才有变量

http://www.ruanyifeng.com/blog/2018/11/awk.html

选项功能
-F fs指定以fs作为输入行的分隔符,awk命令默认分隔符为空格或制表符
-f file从脚本文件中读取awk脚本指令,以取代直接在命令行中输入指令
-v var=val在执行处理过程之前,设置一个变量var,并给其设备初始值为val

‘匹配规则{执行命令}’

注意的是,整个脚本命令是用单引号(’’)括起,而其中的执行命令部分需要用大括号({})括起来。

awk -F= ‘{print $2}’

-F=代表以=为分割 (=可以为任何字符,不加-F参数,默认以空格分隔)

使用数据字段变量

$0代表显示所有的内容

$1代表第一个分隔符左边的内容

$2代表第二个分隔符左边的内容

$n代表第几个分隔符 n是数字

$NF是分隔符最后一列的内容

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值