grep常用参考

1. grep 常用参数 参考: GNU Grep 3.0 --color:高亮显示匹配到的字符串 -v:显示不能被pattern匹配到的 -i:忽略字符大小写 -o:仅显示匹配到的字符串 -q:静默模式,不输出任何信息 -A#:after,匹配到的后#行 -B#:before,匹配到的前#行 -C#:context,匹配到的前后各#行 -E:使用ERE,支持使用扩展的正则表达式 -c:只输出匹配行的计数。 -I:不区分大 小写(只适用于单字符)。 -h:查询多文件时不显示文件名。 -l:查询多文件时只输出包含匹配字符的文件名。 -n:显示匹配行及 行号。 - m: 匹配多少个关键词之后就停止搜索 -s:不显示不存在或无匹配文本的错误信息。 -v:显示不包含匹配文本的所有行。 2. 普通:搜索trace.log 中含有ERROR字段的日志 grep ERROR trace.log 3. 输出文件:可以将日志输出文件中 grep ERROR trace.log > error.log 4. 反向:搜索不包含ERROR字段的日志 grep -v ERROR trace.log 5. 向前:搜索包含ERROR,并且显示ERROR前10行的日志 grep -B 10 ERROR trace.log 6. 向后:搜索包含ERROR字段,并且显示ERROR后10行的日志 grep -A 10 ERROR trace.log 7. 上下文:搜索包含ERROR字段,并且显示ERROR字段前后10行的日志 grep -C 10 ERROR trace.log 8. 多字段:搜索包含ERROR和DEBUG字段的日志 gerp -E 'ERROR|DEBUG' trace....

2022-06-05 00:00:00 · 1 min · Eddie Wang

Shell 书籍和资料收藏

shell 自动化测试 https://github.com/bats-core/bats-core shell精进 https://github.com/NARKOZ/hacker-scripts https://github.com/trimstray/the-book-of-secret-knowledge https://legacy.gitbook.com/book/learnbyexample/command-line-text-processing https://github.com/dylanaraps/pure-bash-bible https://github.com/dylanaraps/pure-sh-bible https://github.com/Idnan/bash-guide https://github.com/denysdovhan/bash-handbook https://pubs.opengroup.org/onlinepubs/9699919799/utilities/contents.html https://github.com/jlevy/the-art-of-command-line https://google.github.io/styleguide/shell.xml https://wiki.bash-hackers.org/start https://linuxguideandhints.com/ 安全加固 https://www.lisenet.com/2017/centos-7-server-hardening-guide/ https://highon.coffee/blog/security-harden-centos-7/ https://github.com/trimstray/the-practical-linux-hardening-guide https://github.com/decalage2/awesome-security-hardening https://www.hackingarticles.in/ https://github.com/toniblyx/my-arsenal-of-aws-security-tools

2022-06-05 00:00:00 · 1 min · Eddie Wang

sed替换

直接在原文的基础上修改 sed -i 's/ABC/abc/g' some.txt 多次替换 方案 1 使用分号 sed 's/ABC/abc/g;s/DEF/def/g' some.txt 方案 2 多次使用-e sed -e 's/ABC/abc/g' -e 's/DEF/def/g' some.txt 转译/ 如果替换或者被替换的字符中本来就有/, 那么替换就会无法达到预期效果,那么我们可以用其他的字符来替代/。 The / characters may be uniformly replaced by any other single character within any given s command. The / character (or whatever other character is used in its stead) can appear in the regexp or replacement only if it is preceded by a \ character. https://www.gnu.org/software/sed/manual/sed.html...

2021-07-08 09:17:30 · 1 min · Eddie Wang

Ack 在contab中无法查到关键词  [draft]

手工执行,可以获得预期结果,但是在crontab中,却查不到结果。 stage_count=$(ack -h "\- name:" -t yaml | wc -l) 最终使用--nofilter参数,解决了问题。 stage_count=$(ack --nofilter -h "\- name:" -t yaml | wc -l) 参考 https://stackoverflow.com/questions/55777520/ack-fails-in-cronjob-but-runs-fine-from-commandline

2021-06-18 00:00:00 · 1 min · Eddie Wang

设置变量默认值

用法 Parameter What does it do? ${VAR:-STRING} If VAR is empty or unset, use STRING as its value. ${VAR-STRING} If VAR is unset, use STRING as its value. ${VAR:=STRING} If VAR is empty or unset, set the value of VAR to STRING. ${VAR=STRING} If VAR is unset, set the value of VAR to STRING. ${VAR:+STRING} If VAR is not empty, use STRING as its value. ${VAR+STRING} If VAR is set, use STRING as its value....

2020-06-03 18:44:33 · 1 min · Eddie Wang

比较与测试

if # if if condition; then commands; fi # if else if if condition; then commands; elif condition; then commands; else commands; fi 简单版本的 if 测试 [ condtion ] && action; [ conditio ] || action; 算数比较 [ $var -eq 0 ] #当var等于0 [ $var -ne 0 ] #当var不等于0 -gt 大于 -lt 小于 -ge 大于或等于 -le 小于或等于 使用-a, -o 可以组合复杂的测试。 [ $var -ne 0 -a $var -gt 2 ] # -a相当于并且 [ $var -ne 0 -o $var -gt 2 ] # -o相当于或 文件比较 [ -f $file ] # 如果file是存在的文件路径或者文件名,则返回真 -f 测试文件路径或者文件是否存在 -x 测试文件是否可执行 -e 测试文件是否存在 -c 测试文件是否是字符设备 -b 测试文件是否是块设备 -w 测试文件是否可写 -r 测试文件是否可读 -L 测试文件是否是一个符号链接 字符串比较 字符串比较一定要用双中括号。...

2020-05-11 13:01:07 · 1 min · Eddie Wang

常用shell技巧

命令行编辑 向左移动光标 ctrl + b 向右移动光标 ctrl + f 移动光标到行尾 ctrl + e 移动光标到行首 ctrl + a 清除前面一个词 ctrl + w 清除光标到行首 ctrl + u 清除光标到行尾 ctrl + k 命令行搜索 ctrl + r 解压与压缩 1、压缩命令: 命令格式: tar -zcvf 压缩文件名 .tar.gz 被压缩文件名 可先切换到当前目录下,压缩文件名和被压缩文件名都可加入路径。 2、解压缩命令: 命令格式: tar -zxvf 压缩文件名.tar.gz 解压缩后的文件只能放在当前的目录。 crontab 每隔x秒执行一次 每隔5秒 * * * * * for i in {1..12}; do /bin/cmd -arg1 ; sleep 5; done 每隔15秒 * * * * * /bin/cmd -arg1 * * * * * sleep 15; /bin/cmd -arg1 * * * * * sleep 30; /bin/cmd -arg1 * * * * * sleep 45; /bin/cmd -arg1 awk从第二行开始读取 awk 'NR>2{print $1}' 查找大文件,并清空文件内容 find /var/log -type f -size +1M -exec truncate --size 0 '{}' ';' switch case 语句 echo 'Input a number between 1 to 4' echo 'Your number is:\c' read aNum case $aNum in 1) echo 'You select 1' ;; 2) echo 'You select 2' ;; 3) echo 'You select 3' ;; 4) echo 'You select 4' ;; *) echo 'You do not select a number between 1 to 4' ;; esac 以$开头的特殊变量 echo $$ # 进程pid echo $# # 收到的参数个数 echo $@ # 列表方式的参数 $1 $2 $3 echo $?...

2020-01-07 00:00:00 · 2 min · Eddie Wang

手工安装oh-my-zsh

yum install zsh -y # github上的项目下载太慢,所以我就把项目克隆到gitee上,这样克隆速度就非常快 git clone https://gitee.com/nuannuande/oh-my-zsh.git ~/.oh-my-zsh # 这一步是可选的 cp ~/.zshrc ~/.zshrc.orig # 这一步是必须的 cp ~/.oh-my-zsh/templates/zshrc.zsh-template ~/.zshrc # 改变默认的sh, 如果这一步报错,就再次输入 zsh chsh -s $(which zsh)

2019-12-27 09:29:41 · 1 min · Eddie Wang

m4读取环境变量

define(`CF_INNER_IP', `esyscmd(`printf "$PWD"')')

2019-12-27 09:28:53 · 1 min · Eddie Wang

pure-bash-bible

字符串 字符串包含 Using a test: if [[ $var == *sub_string* ]]; then printf '%s\n' "sub_string is in var." fi # Inverse (substring not in string). if [[ $var != *sub_string* ]]; then printf '%s\n' "sub_string is not in var." fi # This works for arrays too! if [[ ${arr[*]} == *sub_string* ]]; then printf '%s\n' "sub_string is in array." fi Using a case statement: case "$var" in *sub_string*) # Do stuff ;; *sub_string2*) # Do more stuff ;; *) # Else ;; esac 字符串开始 if [[ $var == sub_string* ]]; then printf '%s\n' "var starts with sub_string....

2019-12-26 13:46:31 · 18 min · Eddie Wang