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 的所有行。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)