首页 > 系统相关 >linux shell 字符串处理过滤方法

linux shell 字符串处理过滤方法

时间:2023-02-14 10:55:45浏览次数:42  
标签:shell grep UUID passwd fstab sed linux 字符串 root

1.grep 文本过滤命令
grep中的正则表达式

^westos #以westos开头
westos$ #以westos结尾
'w....s'
'w.....'
'.....s'
grep -E = egrep
应用:

cp /etc/passwd /mnt
cd /mnt
vim /mnt/passwd
添加(为后边的实验效果做准备):
test:test:root
ROOT:test:test
test:root:test

grep ^root passwd #过滤以root开头的行
grep root$ passwd #过滤以root结尾的行
grep -i ^root passwd #不区分大小写,过滤以root结尾的行
grep -E "^root|root$" passwd #过滤以root开头或者以root结尾的行,-E表示扩展正则表达式
grep -E -v "^root|root$" passwd #-v表示反向过滤
grep -E -v "^root|root$" passwd | grep root #过滤root在中间的行
grep -i root passwd | grep -v -i -E "^root|root$" #过滤root在中间的行
grep 'r.t' test #过滤r和t之间只有一个字符
grep 'r..t' test #过滤r和t之间有二个字符
grep 'r...t' test #过滤r和t之间有三个字符
grep 'r*t' test #过滤r出现的任意次数
grep 'r\**t' test #过滤r,t之间有0个字符
grep 'ro*t' test #过滤r和t之间o出现的任意次数
grep -E 'ro*t' test #过滤r和t之间o出现的任意次数
grep -E 'ro?t' test #过滤r和t之间o出现的0和1次
grep -E 'ro{1,}t' test #过滤r和t之间o出现的1以上的次数
grep -E 'ro{,3}t' test #过滤r和t之间o出现的3以下的次数

2.sed 行编辑器
/*显示*/
sed -n '^:/p' fstab #显示fstab中以:开头的行
sed -n 'UUID$/p' fstab #显示fstab中以UUID结尾的行
sed -n '/^UUID/p' fstab #显示fstab中以UUID开头的行
sed -n '2,6p' fstab #显示fstab中的第二和第六行
sed -n '2,6!p' fstab #显示fstab中除过第二和第六行其余的行
/*删除*/
sed '/^UUID/d' fstab #删除以UUID开头的行
sed '/^#/d' fstab #删除以#开头的行
sed '/^$/d' fstab #删除以空格开头的行
sed '/^UUID/!d' fstab #删除不是以UUID开头的行
cat -n fstab | sed '1,4d' #删除1到4行
cat -n fstab | sed -e '2d;6d' #删除第二行和第六行
/*添加*/
sed '/^UUID/a\hello' fstab #在以UUID开头的行的前一行添加hello
sed '/^UUID/a\hello \nwestos' fstab #在以UUID开头的行的前一行添加hello换行再添加westos

/*插入*/
sed '/^UUID/i\hello' fstab #在UUID的前一行添加hello

/*替换*/
sed 's/要被取代的字串/新的字串/g' #查找并替换
sed '/^UUID/c\hello' fstab #把以UUID开头的行替换成hello


/*其他操作*/
1 sed -n '/^UUID/=' fstab #显示以UUID开头的行号
2 sed -n -e '/^UUID/p' -e '/^UUID/=' fstab #-e用来连接''
3 sed '=' fstab | sed 'N' #N表示每行多加一个换行符
4 sed '=' fstab | sed 's/\n//g' #显示行号并换行
5 sed '=' fstab | sed 'N;s/\n/ /g' #显示行号不换行
6 sed 'G' fstab #每行加空行显示fstab中内容
7 sed '$!G' fstab #每行加空行但最后一行不加空行显示
8 sed -n '$p' fstab #显示文件的最后一行
9 sed 's/nologin/westos/g' passwd #把passwd中以nologin结尾的全部替换为westos
10 sed '3,5s/nologin/westos/g' passwd #用westos替换passwd中第三行到第五行的nologin
11 sed '/adm/,/sync/s/nologin/westos/g;s/sbin/wang/g' passwd #用westos替换以adm和sync开头
3.awk 报告生成器(列操作)
awk '{print $1}' #打印第一列
awk 'BEGIN{ORS=","}{print $1}' #打印第一列并替换换行为逗号
awk -F ":" '{print $1}' passwd #以:为分隔符,显示第一列
awk -F ":" 'BEGIN{print "NAME"}{print $1}' passwd #以NAME开始显示第一列
awk -F ":" 'BEGIN{print "NAME"}{print NR$1}END{print "END"}' passwd #以NAME开始,以END结束,显示第一列并显示行号
awk -F ":" 'BEGIN{print "NAME"}{print NR;print }END{print "END"}' passwd #显示行号并换行
awk -F ":" '/bash$/{print $1}' passwd #sh结尾的行的第一列,$1表示第一列
awk -F ":" 'BEGIN{N=0}/bash$/{N++}END{print N}' passwd #统计passwd中以bash结尾的行数
awk '/^ro/{print}' passwd #打印以ro开头的行
awk '/^[^a-d]/{print}' passwd #打印以a到d开头的行
awk '/^a|nologin$/{print}' passwd #打印以a开头或者以nologin结尾的行
awk -F ":" '$1~/^r/{print}' passwd #打印以r开头的行
awk -F ":" '$1!~/^r/{print}' passwd #打印不以r开头的行
awk -F ":" '{print NR,$0}' passwd #以:为分隔符打印第一列,并表示行号,$0表示文件一整行的内容

标签:shell,grep,UUID,passwd,fstab,sed,linux,字符串,root
From: https://www.cnblogs.com/wangbin/p/17118886.html

相关文章

  • Linux--Install vscode server
    1要做的工作1.1获取vscode的commitid1.2从https://update.code.visualstudio.com/commit:${commit_id}/server-linux-x64/stable下载vscodeserver1.3将vscode......
  • Linux设置服务器时区
    查看服务器当前时区信息,运行命令:timedatectl statustimedatectlstatus 可以看到服务器目前是东八区的时区,如果因为业务需要修改时区,怎么操作呢首先,进入到服务器目......
  • 2023年2月14日学习Linux
    关闭Linux系统的命令:init02)Linux终端:Linux终端也称为虚拟控制台。Linux终端采用字符命令行方式工作,用户通过键盘输入命令,通过Linux终端对系统进行控制。3)切换虚拟终端......
  • 修改Linux密码
    CHPASSWD(8)SystemManagementCommandsCHPASSWD(8)NAMEchpasswd-updatepasswordsinbatchmodeSYNOPSISchpassw......
  • mongodb关于字符串id与ObjectId关联查询的办法
    db.ub.aggregate([{$match:{_id:ObjectId("xxxx")}},{ //提取users里面的user_id转换未ObjectId,名称定为uid$......
  • 使用 shell 脚本拼接 srt 字幕文件 (srtcat)
    背景前段时间迷上了做B站视频,主要是摩托车方面的知识分享。做的也比较粗糙,就是几张图片配上语音和字幕进行解说。尝试过自己解说,发现录制视频对节奏的要求还是比较高的,......
  • linux系统下载软件/软件源相关问题
    系统介绍作者使用Debian9标准版系统,使用系统默认“中科大”软件源:/etc/apt/source.list路径下debhttp://mirrors.ustc.edu.cn/debianstablemaincontribnon-free......
  • Linux系统一
    怎样编辑文件保存文件1.找到需要编辑的文件(vim就是一个相当于windows操作系统里面的记事本。) 2.这个时候如果想修改这个文件的内容,按下间键盘上的’i’键(也就是键盘上的i......
  • Linux系统 三
    1网络配置  1.1开启网络   CentOS8中默认没有开始网络配置。需要手动开启。  启用ens33网络配置。默认只有ens33   #nmclicupens33   #......
  • Linux系统二
    1.目录结构1.1'/'   根目录.Unix和Linux中,没有盘符.一个硬盘,一个根.1.2 '/bin' 系统的常用命令目录.包括控制台命令,系统可执行文件,系统的核心二进制文件等1.......