Linux 文本处理常用工具

文本过滤工具 grep

grep: Global search REgular expression and Print out the line.
作用:文本搜索工具,根据用户指定的“模式(过滤条件)”对目标文本逐行进行匹配检查;打印匹配到的行;
模式:由正则表达式的元字符及文本字符所编写出的过滤条件;

  • grep:基于基本正则表达式进行文本过滤
  • egrep:基于扩展正则表达式, 功能类似于 grep -E
  • fgrep:不支持正则表达式,功能类似于 grep -F
# 基本用法
grep  [OPTIONS]  PATTERN  [FILE...]
grep  [OPTIONS]  [-e PATTERN | -f FILE]  [FILE...]

# 常用选项 OPTIONS:
    --color=auto:对匹配到的文本着色后高亮显示;
    -i:ignorecase,忽略字符的大小写;
    -o:仅显示匹配到的字符串本身;
    -v, --invert-match:显示不能被模式匹配到的行;
    -E:支持使用扩展的正则表达式元字符;
    -q, --quiet, --silent:静默模式,即不输出任何信息;

文本统计工具 wc

wc命令 ,统计文本行数,单词数及文件的字节数

# 基本用法
wc [OPTION]... [FILE]...

# 常用选项
    -l: 统计文件行数
    -w:统计文件单词数
    -c: 统计文件字节数

文本分割工具 cut

按照指定分隔符将文本或标准输入的行进行分割,并选取指定列

# 基本用法
cut OPTION... [FILE]...

# 常用选项
  -d CHAR:以指定的字符为分隔符;
  -f FIELDS:挑选出的字段;
    #:指定的单个字段, 例如 选取 第 1 个 字段
    #-#:连续的多个字段,例如 选取 第 3-5 个 字段
    #,#:离散的多个字段, 例如 选取 第 3,5,7 个 字段

文本排序工具 sort

对文本文件或标准收入的行进行排序

# 基本用法
sort  [OPTION]...  [FILE]...

# 常用选项
    -n:基于数值大小而非字符进行排序;
    -t CHAR:指定分隔符;
    -k #:用于排序比较的字段;
    -r:逆序排序;
    -f:忽略字符大小写
    -u:重复的行只保留一份;
        复复行:连续且相同;

文本去重工具 uniq

# 基本用法
uniq [OPTION]... [INPUT [OUTPUT]]
    -c:显示每行的重复次数;
    -u:仅显示未曾重复过的行;
    -d:仅显示重复过的的行;

文本处理综合实例

1、统计出/etc/passwd文件中其默认shell为非/sbin/nologin的用户个数,并将用户都显示出来

# /etc/passwd文件中其默认shell为非/sbin/nologin的用户
# grep -v "/sbin/nologin$" /etc/passwd | cut -d : -f 1 
root
sync
shutdown
halt
elastic

# /etc/passwd文件中其默认shell为非/sbin/nologin的用户个数
# grep -v "/sbin/nologin$" /etc/passwd | wc -l        
5

2、查出用户UID最大值的用户名、UID及shell类型

# 先取出 用户名、UID及shell类型
# cat /etc/passwd | cut -d : -f 1,3,7
root:0:/bin/bash
bin:1:/sbin/nologin
daemon:2:/sbin/nologin
adm:3:/sbin/nologin
lp:4:/sbin/nologin
sync:5:/bin/sync
shutdown:6:/sbin/shutdown
halt:7:/sbin/halt
mail:8:/sbin/nologin
operator:11:/sbin/nologin
games:12:/sbin/nologin
ftp:14:/sbin/nologin
nobody:99:/sbin/nologin
systemd-network:192:/sbin/nologin
dbus:81:/sbin/nologin
polkitd:999:/sbin/nologin
sshd:74:/sbin/nologin
postfix:89:/sbin/nologin
ntp:38:/sbin/nologin
elastic:1000:/bin/bash

# 按 UID 排序
# cat /etc/passwd | cut -d : -f 1,3,7 | sort -k 2 -t : -n 
root:0:/bin/bash
bin:1:/sbin/nologin
daemon:2:/sbin/nologin
adm:3:/sbin/nologin
lp:4:/sbin/nologin
sync:5:/bin/sync
shutdown:6:/sbin/shutdown
halt:7:/sbin/halt
mail:8:/sbin/nologin
operator:11:/sbin/nologin
games:12:/sbin/nologin
ftp:14:/sbin/nologin
ntp:38:/sbin/nologin
sshd:74:/sbin/nologin
dbus:81:/sbin/nologin
postfix:89:/sbin/nologin
nobody:99:/sbin/nologin
systemd-network:192:/sbin/nologin
polkitd:999:/sbin/nologin
elastic:1000:/bin/bash

# 按 UID 排序,取最后一个既为UID最大的用户
# cat /etc/passwd | cut -d : -f 1,3,7 | sort -k 2 -t : -n | tail -n 1
elastic:1000:/bin/bash

3、统计当前连接本机的每个远程主机IP的连接数,并按从大到小排序

# netstat -atn | awk '{print $5}' | awk '{print $1}' |  uniq -c | sort -nr
      2 0.0.0.0:*
      2 :::*
      1 and
      1 Address
      1 192.168.172.1:55987

4、编写脚本 createuser.sh,实现如下功能:使用一个用户名做为参数,如果 指定参数的用户存在,就显示其存在,否则添加之;显示添加的用户的id号等 信息

# cat createuser.sh 
#!/bin/bash
SCRIPT=$(basename $0)
function usage(){
    echo -e "\nUSAGE: $SCRIPT username \n"
    exit 1
}

if [ $# -ne 1 ] ; then
    usage
fi

user=$1
id ${user} > /dev/null 2>&1
if [ $? -ne 0 ] ; then
   useradd ${user}
   echo "useradd ${user}"
else
   id ${user}
fi
# 用户不存在,创建用户
# sh createuser.sh hadoop
useradd hadoop

# 用户已经创建,显示 uid 等用户信息
# sh createuser.sh hadoop      
uid=1001(hadoop) gid=1001(hadoop) 组=1001(hadoop)

5、编写生成脚本基本格式的脚本,包括作者,联系方式,版本,时间,描述等

# cat script_generator.sh
#!/bin/bash
SCRIPT=$(basename $0)
function usage(){
    echo -e "\nUSAGE: $SCRIPT script_name \n"
    exit 1
}

if [ $# -ne 1 ] ; then
    usage
fi

script_name=$1
now_date=$(date +%F)
tee ${script_name} <<EOF
#!/bin/bash
# description:
# version: 0.0.1
# author: admin <admin@demo.com>
# date: ${now_date}
EOF

# 生成 test_script.sh 脚本
# sh script_generator.sh  test_script.sh
#!/bin/bash
# description:
# version: 0.0.1
# author: admin <admin@demo.com>
# date: 2019-12-21
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容