Sed 静默替换文件内容 以及 awk 的简单使用
1. Sed的help
鸟哥说的 学东西 先看 help 先看man 再google 不好翻墙再百度..
Usage: sed [OPTION]... {script-only-if-no-other-script} [input-file]... -n, --quiet, --silent suppress automatic printing of pattern space -e script, --expression=script add the script to the commands to be executed -f script-file, --file=script-file add the contents of script-file to the commands to be executed --follow-symlinks follow symlinks when processing in place -i[SUFFIX], --in-place[=SUFFIX] edit files in place (makes backup if SUFFIX supplied) -c, --copy use copy instead of rename when shuffling files in -i mode -b, --binary does nothing; for compatibility with WIN32/CYGWIN/MSDOS/EMX ( open files in binary mode (CR+LFs are not treated specially)) -l N, --line-length=N specify the desired line-wrap length for the `l' command --posix disable all GNU extensions. -r, --regexp-extended use extended regular expressions in the script. -s, --separate consider files as separate rather than as a single continuous long stream. -u, --unbuffered load minimal amounts of data from the input files and flush the output buffers more often -z, --null-data separate lines by NUL characters --help display this help and exit --version output version information and exit
2. 感觉用的最多的就是 sed -i 静默本地替换文件内容.
简单的练习
vim zhaobsh.txt
zhaobsh is cainiao zhaobsh is cainiaocainiao
保存之后进行替换
1. 每行增加一个 Yes
sed -i 's/^/Yes /' zhaobsh.txt
2. 没个末尾增加一个 Enough
sed -i 's/$/ Enough/' zhaobsh.txt
效果
3. 将 cainiao 替换才caibi
sed -i 's/cainiao/caibi/' zhaobsh.txt
4. 替换所有的菜鸟的命令
sed -i 's/cainiao/caibi/g' zhaobsh.txt
5. 删除 包含某字符的一整行
sed -i '/Enough/d' zhaobsh.txt
备注 这里会删掉 Enough 所在的整行信息.
简单的学习一下 后续工作中 会越来越多的用到.
其他的命令暂时还没学. 用到了 再继续整理.
备注 一些正则表达式的定义相关
^ 表示一行的开头。如:/^#/ 以#开头的匹配。 $ 表示一行的结尾。如:/}$/ 以}结尾的匹配。 < 表示词首。 如 <abc 表示以 abc 为首的詞。 > 表示词尾。 如 abc> 表示以 abc 結尾的詞。 . 表示任何单个字符。 * 表示某个字符出现了0次或多次。 [ ] 字符集合。 如:[abc]表示匹配a或b或c,还有[a-zA-Z]表示匹配所有的26个字符。如果其中有^表示反,如[^a]表示非a的字符
awk的简单使用 显示 文件的一部分内容
之前删除所有 error的机器 的方法就是使用 awk 来的
1. 创建测试文件
netstat -ano >awk.txt
显示所有 第八项目为"/run/systemd/journal/stdout" 的内容
awk '$8=="/run/systemd/journal/stdout" {print $0}' awk.txt