linux --> shell --> sed,awk,diff,patch
2017-12-30 00:04
393 查看
linux下的shell命令学习笔记008
# --------------------------------
# sed
工具
#-n (安静模式)仅仅sed特殊处理的那一行才显示
#-r
动作支持扩展正则表达式(默认是基础正则表达式)
#-i
直接修改文件内容,而不是由屏幕输出
# 动作说明:直接举例说明吧
cat -n main.c
| sed -n
'5,12p'
#将main.c中的5-12行输出
cat -n main.c
| sed '5,12d' | less
#将main.c中的5-12行删除
nl main.c | sed '2a #include<stdlib.h>'
#在mian.c第2行之后添加#incude...
# 以上例子仅仅打印在屏幕上,并没有写入文件
# 下面这个是直接修改文件,注意别直接用来修改系统文件,太危险了
sed '1a #include<stdlib.h>' -i main.c
#实际写入了文件
# 动作介绍:
# a
追加
# c
替换 nl main.c | sed '3c //Hello world!'
# d
删除
# i
插入
# p
打印
# s
替换,直接进行替换工作,并且可以配合正则表达式
# 1,20s/old/new/h
#该命令可以类比rename的操作
# --------------------------------
# printf
格式化输出
printf '%10s\t%10s\t%10s\n' $(cat 1.txt)
# printf 不是管道命令,因此需要$(cat 1.txt)
printf 'str = \x41\x30\n'
# 直接输出字符: str = A0回车
printf 'num=%d\n' 125
# 输出:num=125
# 我觉得printf可以类比c中的printf(当然并非完全一样,但可类比)
# --------------------------------
# awk
常用于将行分段处理
# sed
常用语行处理
#
# 简单解释该命令:NR是个变量,表示awk所处理的是第几行的数据
last -4 | awk '{print
"line_cnt=" NR "\t" $1 "\t" $3 }'
# 看下面的命令,理解吗?(注意逻辑判断的用法)
ls -al| awk '$5 > 1024
{print $1 "\t" $9}'
# awk特殊的地方,变量不必使用$
# --------------------------------
# diff
常用于同一个文件的新旧版本比较
# [特点]以行进行比较
# 举例:
cat 1.txt
> 2.txt
sed -i
'4,12d' 2.txt
sed -i
'1a wjf' 2.txt
sed -i
'7c AAABBBCCC' 2.txt
diff 1.txt
2.txt
# --------------------------------
# cmp
# [特点]以字节进行比较
# 相对与diff而言,用的较少
# --------------------------------
# patch
该命令和diff密不可分
# ---> 升级
# 举例:
diff -Naur
1.txt
2.txt
> txt.patch
cat txt.patch
| grep '^[+-]*'
# 我的理解:
# ---
代表旧文件
# +++
代表新文件
# +
代表新增
# -
代表删除
#用补丁将旧文件1.txt更新
patch -p0
< txt.patch
#用补丁对更新后的1.txt进行还原
patch -R -p0
< txt.patch
#patch 详解解释:
patch -pN
< patchfile
patch -R -pN
< patchfile
#参数说明:
#-p
后面紧跟的N表示取消几层目录的含义
#-R
代表还原,将更新后的文件还原为旧版本
# --------------------------------
# sed
工具
#-n (安静模式)仅仅sed特殊处理的那一行才显示
#-r
动作支持扩展正则表达式(默认是基础正则表达式)
#-i
直接修改文件内容,而不是由屏幕输出
# 动作说明:直接举例说明吧
cat -n main.c
| sed -n
'5,12p'
#将main.c中的5-12行输出
cat -n main.c
| sed '5,12d' | less
#将main.c中的5-12行删除
nl main.c | sed '2a #include<stdlib.h>'
#在mian.c第2行之后添加#incude...
# 以上例子仅仅打印在屏幕上,并没有写入文件
# 下面这个是直接修改文件,注意别直接用来修改系统文件,太危险了
sed '1a #include<stdlib.h>' -i main.c
#实际写入了文件
# 动作介绍:
# a
追加
# c
替换 nl main.c | sed '3c //Hello world!'
# d
删除
# i
插入
# p
打印
# s
替换,直接进行替换工作,并且可以配合正则表达式
# 1,20s/old/new/h
#该命令可以类比rename的操作
# --------------------------------
# printf
格式化输出
printf '%10s\t%10s\t%10s\n' $(cat 1.txt)
# printf 不是管道命令,因此需要$(cat 1.txt)
printf 'str = \x41\x30\n'
# 直接输出字符: str = A0回车
printf 'num=%d\n' 125
# 输出:num=125
# 我觉得printf可以类比c中的printf(当然并非完全一样,但可类比)
# --------------------------------
# awk
常用于将行分段处理
# sed
常用语行处理
#
# 简单解释该命令:NR是个变量,表示awk所处理的是第几行的数据
last -4 | awk '{print
"line_cnt=" NR "\t" $1 "\t" $3 }'
# 看下面的命令,理解吗?(注意逻辑判断的用法)
ls -al| awk '$5 > 1024
{print $1 "\t" $9}'
# awk特殊的地方,变量不必使用$
# --------------------------------
# diff
常用于同一个文件的新旧版本比较
# [特点]以行进行比较
# 举例:
cat 1.txt
> 2.txt
sed -i
'4,12d' 2.txt
sed -i
'1a wjf' 2.txt
sed -i
'7c AAABBBCCC' 2.txt
diff 1.txt
2.txt
# --------------------------------
# cmp
# [特点]以字节进行比较
# 相对与diff而言,用的较少
# --------------------------------
# patch
该命令和diff密不可分
# ---> 升级
# 举例:
diff -Naur
1.txt
2.txt
> txt.patch
cat txt.patch
| grep '^[+-]*'
# 我的理解:
# ---
代表旧文件
# +++
代表新文件
# +
代表新增
# -
代表删除
#用补丁将旧文件1.txt更新
patch -p0
< txt.patch
#用补丁对更新后的1.txt进行还原
patch -R -p0
< txt.patch
#patch 详解解释:
patch -pN
< patchfile
patch -R -pN
< patchfile
#参数说明:
#-p
后面紧跟的N表示取消几层目录的含义
#-R
代表还原,将更新后的文件还原为旧版本
相关文章推荐
- Linux的shell脚本grep、sed、awk练习和diff、patch、cut、sort介绍
- Shell文本处理 (4) sed、awk、diff、patch、
- linux中shell,awk,sed截取字符串方法总结 Shell 第一种: ${parameter%word} 最小限度从后面截掉word ${parameter%%word} 最大限度从后面
- Linux-world-2012-January->10 (Shell之Sed)
- Linux_shell_ grep && awk && sed
- linux(5)--补充(管道| / 重定向> / xargs)/find 与xargs结合使用/vi,grep,sed,awk(支持正则表达式的工具程序)
- Linux的文本编辑diff & cut & echo & sed & awk & grep
- linux shell sed awk 命令(2)-awk
- linux中shell,awk,sed截取字符串方法总结
- Linux基本功十三:shell脚本Sed & Awk 及软件的安装
- 老大让我学Linux之echo指令,awk,grep,sed指令及shell上的socket程序实例
- LINUX 正则表达式与文件格式化处理(sed / awk / diff )
- linux之shell之grep,awk,sed
- linux grep,sed,awk和diff的使用
- linux shell awk sed 截取需要的内容
- linux shell awk sed
- IT_linux_shell_awk_sed_100篇--awk--例子
- linux shell awk sed
- 【Linux】使用sed、awk来完成批量修改配置文件的shell设计
- linux中shell,awk,sed截取字符串方法总结