003-linux命令-文件和目录、查看文件内容-文本处理-sed、cat、grep、echo
文本处理
1、sed 使用
替换
1.1、s参数
后面跟的是分隔符,原字符串可使用.*这种正则表达式进行整行替换
sed 's/原字符串/替换字符串/'
这里的三个 “/”可以替换其他字符,如# ,?等,有时替换路径,使用/可能会冲突,就可以使用# 等
sed "s/原字符串包含'/替换字符串包含'/" //要处理的字符包含单引号
可以在末尾加g替换每一个匹配的关键字,否则只替换每行的第一个匹配的
示例
1、sed 's/stringa1/stringa2/g' example.txt 将example.txt文件中的stringa1全部替换成stringa2【没修改文件】
这种方式,其实并没有修改文件的内容。如果想保存修改,通常的做法就需要重定向到另外的一个文件:sed 's/stringa1/stringa2/g' example.txt>example.txt.tmp
这样,example.txt.tmp文件就是修改后的文件.如果无误,那么就可以用 mv example.txt.tmp example.txt 覆盖原文件。
如果想直接修改源文件,而没有这样的过程,可以用下面的命令: sed -i 's/stringa1/stringa2/g' example.txt 这样,就直接修改了example.txt文件 【-i 修改原文件】
还有一个更简单的方法 : sed -in-place -e 's/stringa1/stringa2/g' example.txt
1.2、行尾
上箭头”^”表示行首,
美元”$”符号如果在引号中表示行尾,但是在引号外却表示末行(最后一行),
例如:
sed 's/^/添加的头部&/g' //在所有行首添加 sed 's/$/&添加的尾部/g' //在所有行末添加 sed '2s/原字符串/替换字符串/g' //替换第2行 sed '$s/原字符串/替换字符串/g' //替换最后一行 sed '2,5s/原字符串/替换字符串/g' //替换2到5行 sed '2,$s/原字符串/替换字符串/g' //替换2到最后一行
1.3、多个替换
替换样式可以多个在同一条命令中执行,用分号”;”分隔,例如:
sed 's/^/添加的头部&/g;s/$/&添加的尾部/g' //同时执行两个替换规则
1.4、文件内替换
sed处理过的输出是直接输出到屏幕上的,要保存可以将输出重定向,或者使用参数”i”直接在文件中替换:
sed -i 's/原字符串/替换字符串/g' filename //替换文件中的所有匹配项
1.5、Sed里使用变量
1 eval sed 's/$a/$b/' filename 2 sed "s/$a/$b/" filename 3 .sed 's/'$a'/'$b'/' filename 4 .sed s/$a/$b/ filename
更多示例
sed '/^$/d' example.txt 从example.txt文件中删除所有空白行 sed '/*#/d;/^$/d' example.txt 从example.txt文件中删除所有注释和空白行 echo 'esempio' | tr '[:lower:]' '[:upper:]' 合并上下单元格内容 sed -e 'ld' result.txt 从文件中排除第一行 sed -n '/stringa1/p' 查看只包含词汇 stringa1 的行 sed -e 's/*$//' example.txt 删除每行最后的空白字符 sed -e 's/stringa1//g' example.txt 从文档中只删除词汇 stringa1 并保留剩余全部 sed -n '1,5p;5q' example.txt 查看从第一行到底5行内容 sed -n '5p;5q' example.txt 查看第5行 sed -e 's/00*/0/g' example.txt 用单个0替换多个00
cat -n file1标示文件行数
cat example.txt |awk 'NR%2==1' 删除文件中的所有偶数行
cat file1|command(sed,grep,awk,) > result.txt 合并一个文件的详细说明文本,并将简介写入一个新文件中
cat file1|command(sed,grep,awk,) >> result.txt 合并一个文件的详细说明文本,并将简介写入一个已有的文件中
grep Aug file1 在文件中查找关键词 ‘Aug’
grep ^Aug file1 在文件中查找关键词 ‘Aug’开始的词汇
grep [0-9] file1 在文件中查找所有包含数字的行
grep Aug -R /var/log/* 在目录‘/var/log’ 及随后的目录中搜搜字符串Aug
echo a b c |awk '{pring $1}' 查看一行第一栏
echo a b c |awk '{pring $1,$3}' 查看一行第一和第三栏
paste file1 file2 合并两个文件或量栏的内容
paste -d ‘+’ file1 file2 合并两个文件或量栏的内容,中间用+区分
sort file1 file2 排序两个文件内容
sort file1 file2 | uniq 取出两个文件的并集(重复的行只保留一份)
sort file1 file2 | uniq -u 删除交集,留下其他的行
sort file1 file2 | uniq -d 取出两个文件的交集
comm -1 file1 file2 比较两个文件的内容只删除 ‘file1’所包含的内容
comm -2 file1 file2 比较两个文件的内容只删除 ‘file2’所包含的内容
comm -3 file1 file2 比较两个文件的内容只删除两个文件共有的部分
相关文章
- linux查找目录下的所有文件中是否含有某个字符串
- Linux学习之文件特殊权限详解(SetUID、SetGID、Sticky BIT)(十一)
- Linux系统之常用文件搜索命令
- 每天一个linux命令(31): /etc/group文件详解
- Linux内核的文件预读readahead
- linux 复制目录结构,但不复制文件
- Linux下统计目录下文件及文件夹的个数
- linux shell 脚本攻略学习10--生成任意大小的文件和文本文件的交集与差集详解
- Linux的文件时间属性:atime、ctime、mtime
- Linux使用tcpdump命令抓包保存pcap文件wireshark分析
- linux的tar命令详情;linux多个文件压缩打包到一个压缩文件
- Linux 中“一切都是文件”概念和相应的文件类型
- Linux下passwd和shadow文件内容详解
- linux按照文件(夹)大小排序命令:du -d1 /D/* |sort -rn
- Linux scp -r命令主机间文件复制
- linux - xshell使用指令rz 传输文件无法识别指令-解决
- 002-linux命令-文件和目录、查看文件内容-【cp、${}、basename、dirname、ls】
- L15.linux命令每日一练 -- 第二章 文件和目录操作命令 -- chmod、chgrp和umask命令
- L10.linux命令每日一练 -- 第二章 文件和目录操作命令 -- find和xargs命令
- L4.linux命令每日一练 -- 第二章 文件和目录操作命令 -- pwd和cd命令
- Linux中passwd文件
- Linux管理文件命令(2)rm命令-删除文件或者目录
- Linux tar命令之--exclude参数 排除指定的文件或目录
- linux安装tomcat
- linux下的find文件查找命令与grep文件内容查找命令
- Linux|奇怪的知识|locate命令---文件管理小工具
- Linux系统初始化进程及文件(带命令)
- Linux常用文件管理命令
- Linux基础笔记10 | 文件查找命令 find 详解