Linux如何使用正则表达式命令?文本文件 *** 作命令

Linux如何使用正则表达式命令?文本文件 *** 作命令,第1张

Linux对文本 *** 作命令及正则表达式:

cat

cat 是 concatenate 的缩写,所以它的作用其实是连接文件。但默认情况下它会将连接文件的结果送到标准输出。所以我们常用来显示文件内容。类似于 dos 中的 type。

more

当一个文件的内容超过一屏后,我们可以用 more 这个指令来逐屏 察看 文件内容。

less

less 在 more 的基础上,更可以逐行 察看 ,前后翻页。

head

head 显示文件开头部分内容,默认显示前十行参数 --lines 或者 –n 指明显示行数基本格式:

tail

tail 显示文件结尾部分内容,命令用法同 head,参数 -f 显示文件的纪实更新,用于监视日志文件

tail 默认显示文件列表中每个文件的后 10 行,如果没有文件名或文件名为“-”则其从标准输入中读取文件,如果有多个文件则其会在文件前面加上“==>文件名<==”以便区别。

# tail /etc/mail/sendmail.mc 默认查看文件的后 10 行内容

# tail –n 20 /etc/passwd 查看文件后 20 行内容

注意: # tail –f /var/log/message 实时监控日志文件更新信息,非常重要

diff

diff 用于比较两个文件之间的区别,并送到标准输出。输出时先报告两个文件的哪一行不同。基本格式:

参数:

uniq 用于去除文本中相邻的重复行。

-u 参数可以只显示那些没有被重复过的行。 -d 显示有被重复过的行。

cut

cut 可以根据一个指定的标记(默认是 tab)来为文本划分列,然后将此列显示。使用权限:所有使用者

基本格式: cut -cnum1 -num2 filename

说明:显示每行从开头算起 num1 到 num2 的文字。

[root@uplooking root] $ cut –f1 –d: /etc/shadow 表示以 : 为分隔符,显示 /etc/shadow 的第一列 sort

sort 用来按各种需要重新排列文本,一般运用在一个管道之后。例如:

默认情况下 sort 按照字母顺序排列文本。

wc

wc 用来统计一个文件的行数、词数、字数并送到标准输出。也可以用-l(行数)、-w(词数)、-c(字数)来指定输出内容。

你的正则表达式 ^((?!bbb).)/d 几乎正确,但缺少一个关键点。这个表达式使用了负向前瞻断言 (?!bbb) 来匹配不包含 bbb 子字符串的行。但是它还需要一个具体的匹配字符或字符集,以便用于匹配行的所有其他内容。

你可以尝试将表达式修改为 ^[^b]*(?!bbb).*$,它将匹配行首的任何数量的非 b 字符,然后检查该行是否包含 bbb,然后最终匹配行末的所有字符。这样,对于所有不包含 bbb 的行,该表达式将与行完全匹配,从而允许 sed 工具将其删除。

因此,你可以使用以下命令来删除文件中不包含子字符串 bbb 的所有行:

Copy code

sed -i '/^[^b]*\(bbb\)\?$/d' filename

如果要在脚本文件中使用,则可以将其存储在 delete_lines.sh 中:

Copy code

#!/bin/bash

sed -i '/^[^b]*\(bbb\)\?$/d' "$1"

然后,在终端中运行以下命令:

Copy code

chmod +x delete_lines.sh

./delete_lines.sh filename

这将执行 delete_lines.sh 脚本并删除文件 filename 中不包含子字符串 bbb 的所有行。


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/tougao/11505620.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-16
下一篇 2023-05-16

发表评论

登录后才能评论

评论列表(0条)

保存