`
yinwxiang
  • 浏览: 65406 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

shell 文本过滤

阅读更多
今天闲着没事,把以前写的shell再拿出来看好多都忘记了,于是自己用看了一边资料:
.表是单个字符
^一行的开始 ^d以开头的  ^..1 第三个为1的字符   ^字符要放在匹配的字符前面
$一行的末尾 ^$ 表示空行 ^.$匹配一行一个字符的  $字符要放在匹配的字符后面
*匹配任意个字符  包括0个字符
\可以屏蔽一个特殊的字符 \*\.pas 这里的*是特殊字符,这样就表示*.pas这个文件
逗号可以分割不同的匹配字符如[S,s]表示S或者s都可以
-表示一个范围,[1-9],[a-z],[A-Z]  [1-9 A-Z a-z]任意的字符或者数字
A\{2\}B 表示A出现了2次  AAB
A\{4,\}B 表示A至少出现4次 AAAAB,AAAAAB
A\{2,4\}B 表示A出现2-4次  AAB AAAB AAAAB
[0-9]\{3\}\.[0-9]\{3\}\.[0-9]\{3\}\.[0-9]\{3\}  0-999.0-999.0-999.0-999

查找文件的时候 find 用到的
find pathname -options [-print -exec -ok]

-name -perm 权限 -user -group -mtime -n +n  -atime -ctime 文件的时间 -size  -nogroup 无有效属组的文件/etc/group 下不存在 -nouser 无有效用户的文件/etc/passwd
-newer file1 !file 比文件一新但比文件2旧的文件 -type [bdcplf] 文件类型
find . -name "*.rep" -print 匹配了含有.rep的文件,-print 可以不用写
find . -name "[A-Z]*" -print 当前目录下以大写字母开头的
find . -perm 775 当前目录下以775权限的文件

-print 将查找到的文件输出到标准输出
-exec  command {} \
找到后执行一些shell命令
find . -type f -exec ls -l {} \ 查找到并且ls
find . -name "*.log" -mtime +5 -ok rm {} \ 查找5天以前的到并且rm  ok命令要求得到确认

xargs 和exec的区别 exec会发起多个进程,而xargs 只有一个进程减少系统资源的消耗
find . -prem -7 -print|xargs chmod o-w 
find . -prem -7 -print|xargs file 查看文件类型

grep 标准的,扩展的
grep [选项]基础正则表达式[文件]  正则表达式最好用“”括起来
-c 只输出有多少行匹配到了
-i 不区分匹配的大小写
-h 查询多文件时不显示文件名
-H 显示文件名
-l 查询多个文件时,只显示包含匹配字符的文件名
-n 显示匹配行和行信息
-s 不显示不存在的或无匹配的错误信息
-V 过滤掉表达式的部分

grep "^[^210]"  1.txt 非210开头的,2,1,0开头的行都被过滤掉 3-9开头的都可以显示出来
[[:upper:]] [A-Z]
[[:alnum:]] [A-Z0-9a-z]
[[:lower:]] [a-z]
[[:space:]] 空格或tab键
[[:digit:]] [0-9]
[[:alpha:]] [a-zA-Z]
grep "5[[:digit:]][[:digit:]]" 1.txt  500-599的匹配


awk
命名的方式:
awk [-F filed-spearator] 'commend' input-files
awk 脚本 :所有的命名都放在一个文件里面
awk命令插入一个单独的文件
awk -f awk-script-file input-file

默认的分割符为空格 -F : 以:为分割符  awk -F : '{print $1"\t"$4}' i.txt  print中是要用“”引起来字符串的
明白记录,分割,域。一条记录被分割就成了域 awk主要进行的操作就是对域进行操作 动作对数据进行处理 放在{}中内指明。一般用print,模式部分决定动作什么时候被触发
域:$0 $1...$n

awk  'BEGIN {ptint "IP                    date\n"} {print $1"\t"$4} END{print "end of report"} 1.txt
IP                    date
$1    $4
end of report
awk 中特殊的字符“+“”?“ 前者表示多个字符,后者表示一个字符 ~ 匹配 !~不匹配
cat i.txt|awk '$0 ~ /218.79.131.96/'
awk '$0 !~ /210.12.12.30/' i.txt
awk '{if($1=="210.12.12.30") print $0}' i.txt


sed 不对原有的文件操作,先拷贝一个副本,所有操作在副本上操作
sed
命令格式
sed 脚本 :sed 选项 输入文件
sed 脚本 输入文件 :sed 选项 -f sed脚本文件 输入文件
如果没有输入文件,它会从标准输入得到 :sed脚本文件 选项 输入文件
选项
-n 不打印没匹配到
-c 下一个命令是编辑命令
-f 如果正在调用sed脚本

sed '2p' i.txt        p就是打印
sed -n '2p' i.txt     第2行  不打印没匹配到的,只打印匹配到的
sed -n '1,2p' i.txt   打印2行
sed -n '/los/p' i.txt 匹配到los
sed -n '2,/los/p' i.txt 从第3行开始到匹配的los结束
sed -n '/^$/=' i.txt 打印出空行的行号
sed -n -e '/^$/p' -e '/^$/=' i.txt  不能同时用-e 区分
sed '/aaaio/a\shenz' i.txt 会在找到aaaio后追加一行写上shenz 要分两行进行书写
sed '/aaaio/i\shenz' i.txt 会在找到aaaio前追加一行写上shenz
sed '/aaaio/c\shenz  ddd' i.txt 会在找到aaaio 替换成shenz   ddd
sed '1,2d' i.txt 会把1,2行给删除掉
sed 's/shenz/shenzhen/g' i.txt  所有shenz的地方全部替换 不加g时只在当次替换
sed 's/shenz/& shenzhen /p' i.txt 匹配到了shenz以后加上shenzhen
sed 's/shenz/ shenzhen &/p' i.txt 匹配到了shenz之前加上shenzhen
1
3
分享到:
评论

相关推荐

    高级shell编程 第二部分文本过 滤(共5部分)

    本文将深入探讨"高级shell编程"的第二部分——文本过滤,包括正则表达式、grep家族、AWK介绍、sed用法、文件合并与分割以及tr工具的使用。 首先,让我们来理解第7章——正则表达式介绍。正则表达式是一种强大的文本...

    UNIX命令及SHELL编程

    07_文本过滤-正则表达式介绍.PDF 08_文本过滤-grep 家族.PDF 09_文本过滤-AWK 介绍.PDF 10_文本过滤-sed 用法介绍.PDF 11_文本过滤-合并与分割.PDF 12_文本过滤-tr 用法.PDF 13_登录环境-登录环境.PDF 14_...

    shell三剑客过滤文件内字符串长度输出

    **grep** 是另一个常用的文本过滤工具,它能搜索匹配特定模式的行。在过滤字符串长度时,可以结合正则表达式来实现。例如,`egrep -w '^.{1,6}' test` 使用了正则表达式 `^.{1,6}` 来匹配长度为1到6的字符串。`^` ...

    LINUX与UNIX Shell

    这份指南分为两个主要部分:Shell基础和文本过滤。 第一部分介绍了Shell基础知识,其中涵盖了文件安全与权限、使用find和xargs命令、后台执行命令、文件名置换、Shell输入输出以及命令执行顺序等概念。 在文件安全...

    Shell编程技术详解:文件权限与文本处理实战

    Shell编程技术详解:文件权限与文本处理实战

    shell介绍及编程

    本文将介绍Shell的基础知识、文本过滤、登录环境、Shell编程(包括基础和高级技巧),以及一些常用的Shell命令。 一、Shell介绍 Shell是操作系统与用户交互的界面,也是用户执行命令的解释器。它读取用户的输入,...

    Windows cmd 管道过滤命令findstr 学习文档

    `findstr`命令是Windows命令行环境中用于搜索和过滤文本的工具,类似于Linux中的`grep`命令。这个命令允许用户在文件或文件集中查找包含特定字符串或符合特定模式的行。下面将详细介绍`findstr`命令的各种参数和用法...

    shell_txt_to_csv

    描述: 使用 shell script 将文本文件转换为 CSV 文件,同时实现数据的处理和过滤。 标签: shell, txt, csv 知识点: 1. 文本处理: 使用 sed 命令对文本文件进行处理,例如删除逗号、替换字符串等操作。 2. 数据...

    shell脚本,删除文本中的字符

    - `sed`: 流编辑器,用于文本过滤和转换。 - `$!N`: 如果不是最后一行,则读取下一行并将其附加到模式空间。 - `/^\(.*\)\n\1$/!P`: 如果当前行与下一行相同,则跳过打印。 - `D`: 删除模式空间中的所有内容直到...

    Linux Shell编程3/3

    Linux Shell编程经典著作: 第一部分SHELL |_文件安全与权限 |_使用find和xargs |_后台执行命令 |_文件名置换 |_shell输入与输出 |_命令执行顺序 第二部分文本过滤 |_正则表达式介绍 ...

    Linux中Shell截取某行某列信息

    背景:执行shell命令,抓取shell返回信息中的所需信息,已udhcpc为例获取DNS的地址。 暂不作处理,执行udhcpc。 使用grep过滤掉无用信息,执行 udhcpc | grep “DNS” 使用sed抓取第二行,-n ‘2p’代表第二行,-n...

    LINUX与UNIX_Shell编程指南

    第二部分 文本过滤 第7章 正则表达式介绍 第8章 grep家族 第9章 AWK介绍 第10章 sed 用法介绍 第11章 合并与分割 第12章 tr用法 第三部分 登录环境 第13章 登录环境 第14章 环境和shell变量 第15章 引号 第四部分 ...

    Linux_Shell

    这里我们将深入探讨Linux Shell、文本过滤以及登录环境的相关知识。 1. **Linux Shell的基本概念** - Shell是用户与Linux内核之间的桥梁,它接收用户的输入并执行相应的命令。常见的Shell类型有Bash(Bourne-Again...

    Linux Shell Scripting Cookbook Linux Shell 脚本手册

    - **示例**: 使用`grep`、`awk`等工具进行高效的文本搜索与过滤。 - **示例**: 利用管道(`|`)将多个命令串联起来完成复杂操作。 2. **实用的问题解决技巧**:针对最新版本的Linux平台进行了优化,确保提供的方法...

    text-filters:设计用于 BBEdit 的文本过滤器

    文本过滤器旨在与一起使用的文本过滤器。安装如果您使用 Dropbox 同步您的 BBEdit 文本过滤器,则这些过滤器应放在此文件夹中: $HOME/Dropbox/Application Support/BBEdit/Text Filters/否则把它们放进去 $HOME/...

    SHELL基础学习指导

    包括磁盘空间的查看、文件属性与目录配置、文件和目录的管理、查看文件内容、文件内容选取、文件和目录的默认权限和隐藏权限、搜索文件、文件编辑、文件打包和压缩以及文本过滤等操作。这些操作使得用户可以高效地对...

    shell从入门到精通

    7. 文本处理工具:常用的文本处理工具包括grep、sed和awk等,它们能够完成文本搜索、替换、过滤等多种功能。 8. 标准输入、输出和错误:Shell脚本能够处理标准输入、标准输出和标准错误,支持重定向操作。 9. 信号...

    绝版经典 LINUX与UNIX SHELL编程指南 PDF 高清版 [16.3M]

    第二部分 文本过滤 第七章 正则表达式介绍 第八章 GERP家族 第九章 AWK介绍 第十章 SED用法介绍 第十一章 合并与分割 第十二章 TR用法 第三部分 登录环境 第十三章 登录环境 第十四章 环境和SHELL变量 第...

    shell命令精品教程

    第一部分s h e l l 1、 文件的安全与权限, 2、使用find和xargs 3、后台执行命令 4、文件名置换 5、shell输入与输出 6、命令执行顺序 7、文本过滤 8、grep 家族 9、...

Global site tag (gtag.js) - Google Analytics