目录
1.linux awk 模糊查询
释:~ 为包含,!~ 为不包含
【1】查询test.log文件中整行中包含以 12 开头的行
awk '$0 ~ /^[12]/' test.log
【2】查询test.log文件中整行中包含以 12 结尾的行
awk '$0 ~ /[12]/' test.log
2.linux awk 取列 2
【5】取出最后一列
释:NF number of field 每行有多少列
awk -F':' '{print $NF}' /etc/passwd
【6】多个连续符号合并为1个分隔符;如连续多个空格、多个单斜杠为分割符
分割: 12333 567/5
awk -F'[ /]+' '{print $3}' ip.txt
【7】以分隔符 : 或者 /,并取出第三列
awk -F ': | /' ip.txt
【8】取整行
awk '{print $0}' test.log
【9】取出第3列大于0 并且 小于1000 的行并且展示第1列、第3列,对齐显示
awk -F: '$3>0 && $3<1000{print $1,$3}' passwd | column -t
【10】取出行号等于1且展示第3列
awk -F: 'NR==1{print $1,$3}' test.log
3.linux awk 多个条件and查询
awk '/getVideoRealtimeUrl/ && /43122300831327000527/' vms-southapi-576bbcbbc8-nl7s5.log
4.linux awk取列 1
【1】取出第一列和第三列
ll -h | awk '{print $1,$3}'
【2】取出行号和第三列
ll -h | awk '{print NR,$3}'
【3】取出行号和第三列并对齐显示
ll -h | awk '{print NR,$3}' | column -t
【4】取出行号和第三列并对齐显示并制定分隔符
ll -h | awk -F':' '{print NR,$3}' | column -t
5.linux awk取行
【1】 从test.log取出从包含 A 到包含 B 的行(范围)
awk '/A/,/B/' test.log
【2】从test.log取出第3行到最后一行的内容(行)
awk 'NR >= 3' test.log
【3】从test.log取出从包含 A 或包含 B 的行(或)
awk '/A|B/' test.log
【4】从test.log取出行号大于等于3 并且 小于等5(行)
awk 'NR>=2 && NR <=5'
【5】从test.log取出制定行号的内容
awk 'NR==5' test.log
6.linux awk 所有pod日志查询
kubectl get pod |grep fileserver |awk '{print $1}'|xargs -I @ sh -c "echo =====@======= ;kubectl exec @ cat /logs/fileUpload.log |grep 0b839528b7b84bbd8a6e983e845aecb238a1a81ebc2c412fa38d00a89b0692b6"
kubectl get pod | grep das-hk | awk '{print $1}' | while read -r pod; do echo "===== $pod ====="; kubectl exec "$pod" -- sh -c "grep -r '45051200991327000001' /log/Arges/log/DAS_HK*/*.log"; done
7.linux awk 批量删除pod
kubectl get pod |grep Evicted |awk '{print $1}' |xargs kubectl delete pod --force --grace-period=0