Linux系列之文本操作命令

语言: CN / TW / HK

前言

Linux 有八个常用的文本操作命令: catheadtailnlgrepsedmoreless 。本文介绍它们的区别和简单用法。

cat命令

显示文本的最基本命令。

cat file
cat /usr/share/metasploit-framework/data/wordlists/passwd.lst

cat 命令不是最方便的命令,但却十分快捷。

head命令

该命令将显示文件的前10行(默认情况下)。

head filename

如果你想显示指定的行数,请在 head 命令后使用 - 来指定。

head -20 passwd.lst

tail命令

该命令与 head 命令相反,将显示文件的最后10行(默认情况下)。

tail filename

如果你想显示指定的行数,请在 tail 命令后使用 - 来指定。

tail -20 passwd.lst

nl命令

显示带有行号的文件。

nl file

如果你用管道输出到它,它使参考变得更容易。

head -35 passwd.lst | nl

grep命令

可能是使用最广泛的文本处理命令。关于这个命令,有好几本书。

cat file | grep keyword

它可以让你过滤显示文件的内容。

cat passwd.list | grep output

结合前面的命令,让我们查看passwd.lst第20至50行中所有含有23的字词。

head -50 passwd.lst | tail -30 | grep 23 | nl
  • head -50 passwd.lst 表示我们想要显示前50行。
  • tail -30 表示想要从 head 命令得到的前50行里的最后30行,也就是20-50行。
  • grep 23 将只显示包含23的行。
  • nl 将显示行数。

sed命令

这个命令可以让你搜索出现的单词或测试模式,然后对它执行一些操作。类似于Windows中的查找和替换。 sed 中的命令以单个字母开头。

s 是替换命令:

echo "gwyn" | sed 's/gwyn/gps'

让我们使用 sedsnort.conf 文件中找到 mysl 的所有实例,并将其替换为 MySQL ,并将该文件保存为当前目录中的 snorttest.conf

sed s/searchterm/replacementterm/occurence

这里的 g 代表全局,意味着替换发生的所有实例。

sed s/mysql/MySQL/g /etc/snort/snort.conf > snorttest.conf

你可以通过在末尾使用 /1/2 等来指定你要替换的行的哪一次出现。

我们假设我们有一个 textfile.txt 文件:

gwyn gps
gwyn gps gps
gwyn gps gps gps

我们如何才能在每一行中只将第二次出现的 gps 替换为 gwyneth

sed s/gps/gwyneth/2 textfile.txt > sample.txt

现在,如果我们想只在第三行中替换第二个出现的内容,该怎么办?我们可以在 s 命令的前面加上一个数字来表示。

sed 3s/gps/gwyneth/2 textfile.txt > sample2.txt

让我们看看在 snort.conf 中, mysql 每次出现的地方:

并将第二行中出现的每一个 mysql 替换为 dogs ,并将其保存到 sample2.txt

more命令

每次显示文件的一页,并允许分页。

more file
more snort.conf

less命令

more 命令类似,只不过更加实用。毕竟少即是多。

less file

如果你按下 / 键, less 将允许你在文件中搜索术语。

less snort.conf

在这里,我按下 / 键,并键入选项:

less 带我到第一个发生的地方,按 n 键是下一个。

总结

就这样吧,我终于开始理解把这些命令连在一起的强大力量了。