文本处理
终端文本处理
常用工具
sed, grep, awk
jq, ag, tac
shell 文本处理
sed
sed -n '100p' # show 100 line
sed -i 's/$/\r/' req_body # 将文件的换行符由 lf 修改为 crlf
sed -n '/^[^#]/p' file.conf # 显示非注释行, 非 # 开头
sed -n '/^[^#[:space:]]\{1,\}/p' file.txt # 显示非注释行, 非 # + 空格 开头
sed -e '/^[ ]*#|^$/d' # 删除以空格开头或#开头或者空行的行;
sed -i '1d' fiel1 # 删除第1行, 注意,大文件特别慢,会另外生成一个文件
sed -i '1,100d' fiel1 # 删除第1-100行
# 在文件头部插入一行
sed -i '1iexport LD_LIBRARY_PATH=$HOME/deploy/lib:$LD_LIBRARY_PATH' ~/.bashrc
# 过滤颜色字符串
sed -r "s/\x1B\[([0-9]{1,2}(;[0-9]{1,2})?)?[m|K]//g"
sed 's,\x1B\[[0-9;]*[a-zA-Z],,g'
# 去除文件内的颜色控制字符
sed -i -E 's/\x1B\[[0-9]+m//g' node100.log
# 替换 以me1 开头, 后面跟38个字母
sed -i -e 's/me1[[:alnum:]]\{38\}/me1_addr/g' 500w.loggrep
grep "18080\|28080" # 多条件-或
grep -E "word1|word2|word3" file.txt # 多条件-或
egrep -v "xx|xx1|xx2" # 排除多个关键字
grep -C 10 xxx file # 查看关键字的前后10行
# -A 后面N行
# -B 前面N行
# -C 前后N行
# 查找当前目录下的部分文件中的包含关键字的文件
find ./ -type f -name "*.c" -o -name"*.h" | xargs grep "strings"jq
# jq 转义
user2='{"@type":"/ethermint.crypto.v1.ethsecp256k1.PubKey","key":"A68XidNaWKkGL2YjO9OYXsVnnarMhXOsKko/KQp4Qo8C"}'
# 转换为友好的转义格式
echo $user2 | jq @json
# "{\"@type\":\"/ethermint.crypto.v1.ethsecp256k1.PubKey\",\"key\":\"A68XidNaWKkGL2YjO9OYXsVnnarMhXOsKko/KQp4Qo8C\"}"vi
set paste # 不自动缩进其它工具
tac # 将标准输入反序输出, 即第一行是最后一行最后更新于