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 | 会直接修改源文件,要慎用 |
n | 1~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是分隔符最后一列的内容