Linux学习笔记 第八章 文本处理工具与正则表达式

1.1文本提取工具

1.cat:查看文件内容,打印一个或多个文件到标准输出
-n 打印行号
cat -n file1 file2 >> file3

2.head:默认打印前十行,可以接受文件和管道
- n +N 指定前N行,默认不带符号
- n -N 去掉末尾N行
cat -n file1 | head -n 5 查看开头5行,带行号
cat -n file1 | head -n -5 查看除掉末尾5行的所有行,带行号

3.tail:默认打印后十行
- n -N 指定末尾N行,默认不带符号
- n +N 从第N行到末尾
常用,可以查看日志
tail -f file/* 实时监控文件 tailf = tail -f

查看10到20行:cat -n | head -n 20 | tail -n 11

4.more:分页显示,一次性查看
more file
5.less:分页多次查看
less file
/text 查找关键词
g或G 第一页 最后一页
按v 进入vim编辑模式
按q 退出less
(man使用的就是less分页工具)

6.grep:过滤行,行为操作单位
grep text file 显示file文件中带有text字符串的行
常用
-i:忽略大小写敏感
-n:打印匹配的行号
-o:只显示匹配的内容,一个一行
-w:只匹配该单词,而不是含有该单词的单词
-c:匹配成功的行数
-v:打印不匹配的行
-q:静默输出(无输出),使用$?判断是否执行成功
-Ax:将匹配行及其后x行一起打印
-Bx:将匹配行及其前x行一起打印
-Cx:将匹配行及其前,后x行一起打印
-r:递归搜索目录,查找字符串所在的文件,后接目录
-l:匹配成功,只列出文件名,多于-r使用
–color=auto:用color颜色高亮显示匹配数据

1.2基本正则表达式

^String :以String开头的行
例:grep -w ‘^root’ file01:过滤file01文件中以root单词开头的行
String$ :以String结尾的行
例:grep -w 'bash$ ’ file01:过滤file01文件中以bash单词结尾的行
’^$'表示空行
\<String:以String开头的单词
String\>:以String结尾的单词
\<String\>等价于-w
.:对单个字符进行匹配,代表任意一个字符
[abc]:代表abc中任意单个字符,是其中一个,a或b或c
[^abc]:除了abc以外的任意单个字符,肯定不是a不是b不是c
^[abc]:a或b或c开头的行
^[^abc]: 不以a或b或c开头的行
[a-z]:a到z之间任意一个
[0-9]:数字
[a-z]:小写
[A-Z];大写
[a-zA-Z]:所有字母
[^a-zA-z0-9]: 除了字母和数字
\:转义字符
例:grep ‘^\[’ file01 ,过滤"["开头的行
*:对前一项字符进行0到多次匹配
例:"ro*"代表 r 或 ro 或 roo 或 rooo…
“.*” 任意字符出现任意次

1.3扩展正则表达式

基本正则表达式依然适用
使用扩展正则表达式进行行过滤要使用 grep -E 或者 egrep
+:对前一个字符进行1到n次匹配,类似*
?:对前一个字符进行0到1次匹配,类似*
{j}:对前一个字符进行j次匹配
{j,}:对前一个字符进行j到若干多次匹配
{,k}:对前一个字符进行0到k次匹配
{j,k}:对前一个字符进行j到k次匹配
s|t匹配s或者匹配t
(exp):将exp当作单项处理

1.4cut-提取列或字段

cut -d: -f1 /etc/passwd
-d:指定分隔符
-f:指定第几列
-c1-5:截取第1到5个字符
提取passwd文件以":"分割的第一列

1.5文本分析工具

  • 文本统计:wc
    -l 统计行
    -w 统计单词
    -c 统计字节
  • 文本排序:sort
    -t:指定分隔符
    -k:指定列
    -n:按数值大小排序
    -r:降序,从大到小
    -u:去重复行
    例:sort -t: -k3 -n passwd
    ps -eo %cpu,%mem,command | tail -n +2 | sort -rn | head
  • 去除相邻重复行:uniq
    -c:重复行出现次数
  • 文件比较:diff

1.6文本操作工具

  • 文本转换工具:tr 把一种类型字符转换为另一种字符
    -s:去除重复字符串
    tr ‘/’ ‘\n’ 将所有/转换成换行符
    tr ’A-Z‘ ’a-z‘ 大小写转化
    tr -s ’ ’ 去除空格
  • 流编辑器:sed
    sed-流编辑器用法:
    sed 选项 ‘str’ 文件名
    sed -n -r ‘/regxp/p’ file 打印匹配正则表达式所在的行,无高亮
    -r:支持扩展正则
    -n:静默输出
    在这里插入图片描述
    在这里插入图片描述
    示例:
    在这里插入图片描述
    在这里插入图片描述
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
### 回答1: Python学习笔记|字符串与正则表达式练习题答案 1. 练习题1: 题目:给定一个字符串s,找出其中的连续的最长的数字串。 答案:可以通过正则表达式来匹配数字串,然后使用max函数找出最长的。 代码示例: import re def find_longest_num_str(s): num_str_list = re.findall('\d+', s) longest_str = max(num_str_list, key=len) return longest_str s = "ab1234c56789def" print(find_longest_num_str(s)) 输出:56789 2. 练习题2: 题目:给定一个字符串s,将其中的每个空格替换为"%20"。 答案:可以通过正则表达式的sub函数来实现替换。 代码示例: import re def replace_space(s): new_s = re.sub(' ', '%20', s) return new_s s = "Hello World" print(replace_space(s)) 输出:Hello%20World 3. 练习题3: 题目:给定一个字符串s,判断它是否为回文字符串。 答案:可以使用切片操作将字符串反转,然后与原字符串进行比较。 代码示例: def is_palindrome(s): return s == s[::-1] s = "abcba" print(is_palindrome(s)) 输出:True ### 回答2: 以下是关于字符串和正则表达式练习题的答案: 1. 给定一个字符串s,编写一个函数,返回该字符串的反转字符串。 def reverse_string(s): return s[::-1] 2. 给定一个字符串s,编写一个函数,返回是否是回文字符串。 def is_palindrome(s): return s == s[::-1] 3. 给定一个字符串s和一个字符c,编写一个函数,返回字符串s中字符c的出现次数。 def count_char(s, c): return s.count(c) 4. 给定一个字符串s,编写一个函数,返回字符串s中的所有单词列表。 def split_words(s): return s.split() 5. 给定一个字符串s,编写一个函数,返回字符串s中的所有数字列表。 import re def extract_numbers(s): return re.findall(r'\d+', s) 这只是一些可能的答案,其中的解决方法可以有很多种。每个问题都有不同的解决方案,具体取决于个人的编程风格和需求。希望这些答案能够帮助你理解和学习Python中的字符串和正则表达式

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

浇、水

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值