uniq相关知识
-
linux uniq 命令整理无论是工作中使用还是应付各种面试,linux uniq 都是必须要掌握的 linux 基本命令之一。uniq 一般和 sort 一起用,用来对排序好的内容去重uniq 对排序好的内容进行去重语法:uniq [-cdu][-f<栏位>][-s<字符位置>][-w<字符位置>][--help][--version][输入文件][输出文件]选项:-c或--count 在每列旁边显示该行重复出现的次数 -d或--repeated 仅显示重复出现的行 -f<栏位>或--skip-fields=<栏位> 比较时跳过前n列,从n+1列开始比较 -s<字符位置>或--skip-chars=<字符位置>比较时跳过前n个字符,从n+1个字符开始比较 -u或--unique 仅显示出现一次的行 -w<字符位置>或--check-chars=<字符位置>对每行第n个字符以后的
-
Linux求两个文本文件的交集、差集、并集一、交集sort a.txt b.txt | uniq -d二、并集sort a.txt b.txt | uniq三、差集a.txt-b.txt:sort a.txt b.txt b.txt | uniq -ub.txt - a.txt:sort b.txt a.txt a.txt | uniq -u四、相关的解释使用sort可以将文件进行排序(sort排序是为了管道交给uniq进行处理,uniq只能处理相邻的行),可以使用sort后面的参数,例如 -n 按照数字格式排序,例如 -i 忽略大小写,例如使用-r 为逆序输出等uniq为删除文件中重复的行,得到文件中唯一的行,参数-d 表示的是输出出现次数大于1的内容;参数-u表示的是输出出现次数为1的内容;那么对于上述的求交集并集差集的命令做如下的解释:sort a.txt b.txt | uniq -d:将两个文件进行排序,uniq使得两个文件中的内容为唯一的,使用-d输出两个文件中次数大于1的内容,即是得到交集sort a.txt b.txt | uniq
-
Linux 上Fail2ban阻止SSH暴力攻击 保护你的服务器不被暴力破解查看尝试登录的IP和次数:# ubuntu cat /var/log/auth.log | awk '/Failed/{print $(NF-3)}' | sort | uniq -c | awk '{print $2" = "$1;}'# centoscat /var/log/secure | awk '/Failed/{print $(NF-3)}' | sort | uniq -c | awk '{print $2" = "$1;}'结果如下95.99.1
-
扣丁学堂HTM5开发shell脚本定时统计Nginx下access.logdPV发送给API保存数据库今天扣丁学堂HTML5培训老师给大家介绍一下关于shell脚本定时统计Nginx下access.log的PV并发送给API保存到数据库的实现方法详解,希望对学习HTML5开发的同学有所帮助,下面我们一起来看一下吧。 1、统计PV和IP 统计当天的PV(PageView) cataccess.log|sed-n/`date"+%d\/%b\/%Y"`/p|wc-l 统计某一天的PV cataccess.log|sed-n'/20\/Sep\/2018/p'|wc-l 查看日志中访问次数最多的前10个IP cataccess.log.1|cut-d''-f1|sort|uniq-c|sort-nr|awk'{print$0}'|head-n10 查看日志中访问次数超过1000次的前10个IP cataccess.log.1|cut-d''-f1|sort|uniq-c|sort-nr|awk'{if($
uniq相关课程
uniq相关教程
- 2. uniq 简介:对于一些重复输出的行进行去重。语法:uniq [OPTION]... [INPUT [OUTPUT]]选项说明:-c: 打印出现的次数,只能统计相邻的;-d: 只打印重复行;-u: 只打印不重复行;-D: 只打印重复行,并且把所有重复行打印出来。实例:对/etc/passwd中以:,对最后一列求出现的次数[root@master ~]# awk -F":" '{print $NF}' /etc/passwd/bin/bash/sbin/nologin/sbin/nologin/sbin/nologin/sbin/nologin/bin/sync/sbin/shutdown/sbin/halt/sbin/nologin/sbin/nologin/sbin/nologin/sbin/nologin/sbin/nologin/sbin/nologin/sbin/nologin/sbin/nologin/sbin/nologin/sbin/nologin/sbin/nologin/sbin/nologin/bin/nologin/sbin/nologin/sbin/nologin/sbin/nologin/sbin/nologin/sbin/nologin/sbin/nologin[root@master ~]# awk -F":" '{print $NF}' /etc/passwd |sort |uniq -c |sort -nr 22 /sbin/nologin 1 /sbin/shutdown 1 /sbin/halt 1 /bin/sync 1 /bin/nologin 1 /bin/bash先利用awk打印出最后一列内容,之后利用sort 来进行排序,将相同的字符规在一起输出,最后对相同的行进行去重,得出每种不同类型shell出现的次数,最后对数学从大到小排序。
- 3.7 去除数组元素中重复项 使用uniq方法删除重复项。linux_systems = ["RHEL", "SuSE", "PCLinuxOS", "Ubuntu", "Fedora", "RHEL", "SuSE"]linux_systems.uniq=> ["RHEL", "SuSE", "PCLinuxOS", "Ubuntu", "Fedora"]注意事项:在这种情况下,uniq方法不会更改原始数组。如果您真的想从数组中删除重复项,以便更改数组本身,请使用uniq!实例:linux_systems=> ["RHEL", "SuSE", "PCLinuxOS", "Ubuntu", "Fedora", "RHEL", "SuSE"]linux_systems.uniq!=> ["RHEL", "SuSE", "PCLinuxOS", "Ubuntu", "Fedora"]linux_systems=> ["RHEL", "SuSE", "PCLinuxOS", "Ubuntu", "Fedora"]
- 3.12 数组的排序 numbers = [1, 4, 6, 7, 3, 2, 5]=> [1, 4, 6, 7, 3, 2, 5]numbers.sort=> [1, 2, 3, 4, 5, 6, 7]reverse方法可以将数组倒序排列。numbers = [1, 4, 6, 7, 3, 2, 5]=> [1, 4, 6, 7, 3, 2, 5]numbers.reverse=> [5, 2, 3, 7, 6, 4, 1]Tips : 和uniq!方法一样,使用sort!和reverse!方法会对调用方法的数组直接进行修改。
- 3.3 实现 #!/bin/bash# Description: sys check# Auth: kaliarch# Email: kaliarch@163.com# function: sys check# Date: 2020-03-29 14:00# Version: 1.0[ $(id -u) -gt 0 ] && echo "请用root用户执行此脚本!" && exit 1sysversion=$(rpm -q centos-release|cut -d- -f3)line="-------------------------------------------------"[ -d logs ] || mkdir logssys_check_file="logs/$(ip a show dev eth0|grep -w inet|awk '{print $2}'|awk -F '/' '{print $1}')-`date +%Y%m%d`.txt"# 获取系统cpu信息function get_cpu_info() { Physical_CPUs=$(grep "physical id" /proc/cpuinfo| sort | uniq | wc -l) Virt_CPUs=$(grep "processor" /proc/cpuinfo | wc -l) CPU_Kernels=$(grep "cores" /proc/cpuinfo|uniq| awk -F ': ' '{print $2}') CPU_Type=$(grep "model name" /proc/cpuinfo | awk -F ': ' '{print $2}' | sort | uniq) CPU_Arch=$(uname -m)cat <<EOF | column -tCPU信息:物理CPU个数: $Physical_CPUs逻辑CPU个数: $Virt_CPUs每CPU核心数: $CPU_KernelsCPU型号: $CPU_TypeCPU架构: $CPU_ArchEOF}# 获取系统内存信息function get_mem_info() { check_mem=$(free -m) MemTotal=$(grep MemTotal /proc/meminfo| awk '{print $2}') #KB MemFree=$(grep MemFree /proc/meminfo| awk '{print $2}') #KB let MemUsed=MemTotal-MemFree MemPercent=$(awk "BEGIN {if($MemTotal==0){printf 100}else{printf \"%.2f\",$MemUsed*100/$MemTotal}}") report_MemTotal="$((MemTotal/1024))""MB" #内存总容量(MB) report_MemFree="$((MemFree/1024))""MB" #内存剩余(MB) report_MemUsedPercent="$(awk "BEGIN {if($MemTotal==0){printf 100}else{printf \"%.2f\",$MemUsed*100/$MemTotal}}")""%" #内存使用率%cat <<EOF内存信息:${check_mem}EOF}# 定义主函数function sys_check() { get_cpu_info echo ${line} get_mem_info echo ${line}}# 执行主函数将输出重定向到文件中sys_check > ${sys_check_file}# 执行测试[root@xuel-terraform-cvm-0 ~]# bash sys_check.sh[root@xuel-terraform-cvm-0 ~]# cat logs/10.0.1.15-20200329.txtCPU信息:物理CPU个数: 1逻辑CPU个数: 1每CPU核心数: 1CPU型号: Intel(R) Xeon(R) CPU E5-26xx v4CPU架构: x86_64-------------------------------------------------内存信息: total used free shared buffers cachedMem: 996 920 76 0 191 600-/+ buffers/cache: 127 868Swap: 0 0 0-------------------------------------------------可以看到利用了两个函数来获取系统的信息,将其利用重定向方式输出到文件中。
- 2.3 实现 核心利用 sed 代码:#!/bin/bash# auth:kaliarch# func:sys info check# version:v1.0# sys:centos6.x/7.x# 判断用户是否为root用户,如果非root则提示需要root用户执行脚本[ $(id -u) -gt 0 ] && echo "请用root用户执行此脚本!" && exit 1sysversion=$(rpm -q centos-release|cut -d- -f3)line="-------------------------------------------------"# 创建日志目录[ -d logs ] || mkdir logs# 定义日志文件sys_check_file="logs/$(ip a show dev eth0|grep -w inet|awk '{print $2}'|awk -F '/' '{print $1}')-`date +%Y%m%d`.txt"# 获取系统cpu信息function get_cpu_info() { Physical_CPUs=$(grep "physical id" /proc/cpuinfo| sort | uniq | wc -l) Virt_CPUs=$(grep "processor" /proc/cpuinfo | wc -l) CPU_Kernels=$(grep "cores" /proc/cpuinfo|uniq| awk -F ': ' '{print $2}') CPU_Type=$(grep "model name" /proc/cpuinfo | awk -F ': ' '{print $2}' | sort | uniq) CPU_Arch=$(uname -m)cat <<EOF | column -t CPU信息:物理CPU个数: $Physical_CPUs逻辑CPU个数: $Virt_CPUs每CPU核心数: $CPU_KernelsCPU型号: $CPU_TypeCPU架构: $CPU_ArchEOF}# 获取系统内存信息function get_mem_info() { check_mem=$(free -m) MemTotal=$(grep MemTotal /proc/meminfo| awk '{print $2}') #KB MemFree=$(grep MemFree /proc/meminfo| awk '{print $2}') #KB let MemUsed=MemTotal-MemFree MemPercent=$(awk "BEGIN {if($MemTotal==0){printf 100}else{printf \"%.2f\",$MemUsed*100/$MemTotal}}") report_MemTotal="$((MemTotal/1024))""MB" #内存总容量(MB) report_MemFree="$((MemFree/1024))""MB" #内存剩余(MB) report_MemUsedPercent="$(awk "BEGIN {if($MemTotal==0){printf 100}else{printf \"%.2f\",$MemUsed*100/$MemTotal}}")""%" #内存使用率%cat <<EOF内存信息:${check_mem}EOF}# 获取系统网络信息function get_net_info() { pri_ipadd=$(ip a show dev eth0|grep -w inet|awk '{print $2}'|awk -F '/' '{print $1}') pub_ipadd=$(curl ifconfig.me -s) gateway=$(ip route | grep default | awk '{print $3}') mac_info=$(ip link| egrep -v "lo"|grep link|awk '{print $2}') dns_config=$(egrep -v "^$|^#" /etc/resolv.conf) route_info=$(route -n)cat <<EOF | column -t IP信息:系统公网地址: ${pub_ipadd}系统私网地址: ${pri_ipadd}网关地址: ${gateway}MAC地址: ${mac_info}路由信息:${route_info}DNS 信息:${dns_config}EOF}# 获取系统磁盘信息function get_disk_info() { disk_info=$(fdisk -l|grep "Disk /dev"|cut -d, -f1) disk_use=$(df -hTP|awk '$2!="tmpfs"{print}') disk_inode=$(df -hiP|awk '$1!="tmpfs"{print}')cat <<EOF磁盘信息:${disk_info}磁盘使用:${disk_use}inode信息:${disk_inode}EOF}# 获取系统信息function get_systatus_info() { sys_os=$(uname -o) sys_release=$(cat /etc/redhat-release) sys_kernel=$(uname -r) sys_hostname=$(hostname) sys_selinux=$(getenforce) sys_lang=$(echo $LANG) sys_lastreboot=$(who -b | awk '{print $3,$4}') sys_runtime=$(uptime |awk '{print $3,$4}'|cut -d, -f1) sys_time=$(date) sys_load=$(uptime |cut -d: -f5)cat <<EOF | column -t 系统信息:系统: ${sys_os}发行版本: ${sys_release}系统内核: ${sys_kernel}主机名: ${sys_hostname}selinux状态: ${sys_selinux}系统语言: ${sys_lang}系统当前时间: ${sys_time}系统最后重启时间: ${sys_lastreboot}系统运行时间: ${sys_runtime}系统负载: ${sys_load}EOF}# 获取服务信息function get_service_info() { port_listen=$(netstat -lntup|grep -v "Active Internet") kernel_config=$(sysctl -p 2>/dev/null) if [ ${sysversion} -gt 6 ];then service_config=$(systemctl list-unit-files --type=service --state=enabled|grep "enabled") run_service=$(systemctl list-units --type=service --state=running |grep ".service") else service_config=$(/sbin/chkconfig | grep -E ":on|:启用" |column -t) run_service=$(/sbin/service --status-all|grep -E "running") ficat <<EOF服务启动配置:${service_config}${line}运行的服务:${run_service}${line}监听端口:${port_listen}${line}内核参考配置:${kernel_config}}# 获取系统用户信息function get_sys_user() { login_user=$(awk -F: '{if ($NF=="/bin/bash") print $0}' /etc/passwd) ssh_config=$(egrep -v "^#|^$" /etc/ssh/sshd_config) sudo_config=$(egrep -v "^#|^$" /etc/sudoers |grep -v "^Defaults") host_config=$(egrep -v "^#|^$" /etc/hosts) crond_config=$(for cronuser in /var/spool/cron/* ;do ls ${cronuser} 2>/dev/null|cut -d/ -f5;egrep -v "^$|^#" ${cronuser} 2>/dev/null;echo "";done)cat <<EOF系统登录用户:${login_user}${line}ssh 配置信息:${ssh_config}${line}sudo 配置用户:${sudo_config}${line}定时任务配置:${crond_config}${line}hosts 信息:${host_config}EOF}# 获取进程信息function process_top_info() { top_title=$(top -b n1|head -7|tail -1) cpu_top10=$(top b -n1 | head -17 | tail -10) mem_top10=$(top -b n1|head -17|tail -10|sort -k10 -r)cat <<EOFCPU占用top10:${top_title}${cpu_top10}内存占用top10:${top_title}${mem_top10}EOF}# 信息汇总function sys_check() { get_cpu_info echo ${line} get_mem_info echo ${line} get_net_info echo ${line} get_disk_info echo ${line} get_systatus_info echo ${line} get_service_info echo ${line} get_sys_user echo ${line} process_top_info}sys_check > ${sys_check_file}
- uni-app 的打包发布 跨端开发首选框架
uniq相关搜索
-
ubuntu安装
ubuntu安装教程
ubuntu官网
ucenter
udp通信
ui层
uml
uml类图
uml建模
uml教程
uml图
underscore
uni app
unicode
uniform
union
union用法
uniq
uniqueconstraint
uniqueid