文本处理

文本处理

终端文本处理

常用工具
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.log

grep

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             # 将标准输入反序输出, 即第一行是最后一行
最后更新于