Linux三剑客与管道及正则

linux常用工具:

        1.正则:正则表达式是记录文本规则的代码。  在线正则表达式测试

        2.管道符“|”,用于连接两个命令间的输出与输入,管道符“|”左边的命令的输出会作为管道符“|”右边命令的输入。

         echo "hello world" | grep hello

        3.grep,sed,awk为三剑客,对文本进行处理。

                1).grep  根据用户指定的模式(pattern)对目标文本进行过滤,显示被匹配到的行。

                        -v  显示不被pattern匹配的行---》grep -nv root test.txt:文件中不包含root的行数

                        -i  忽略字符大小写

                        -n  显示匹配的行号------》grep -n root test.txt:查找文件中包含root的行数

                        -c  统计匹配的行数

                        -o  仅显示匹配到的字符串

                        -E  使用ERE,相当于egrep

                        查找以R开始,以\结尾的行

     

                2).sed   流编辑器,一次处理一行

                        sed [OPTION]... {script-only-if-no-other-script} [input-file]...

                        sed -h  帮助文档   向下翻:j

                                                      向上翻:k

                                                      下一个关键字:n

                                                      上一个关键字:N

                        sed -i 's/old_word/new_word/g' test.txt  以修改文件内容的形式将

                                                        文件内全局的old_word替换为new_word.

                        a:新增    sed -e '4a i love you'  在第四行后面新增一行i love you;

                        c.取代    sed -e '2,5c i love you'   将第2至第5行的数据以i love you替换;

                        d.删除    sed -e '2,5d'    将第2~5行删除;

                        i:插入     sed -e '4i I love you'   在第四行前面插入一行I love you; 

                        p:打印    sed -n '/root/p'

                        s:取代     sed -e 's/old_word/new_word/g'   将全局的old_word替换为new_word.

                3).awk  把文件逐行读入,以空格为默认分隔符将每行切片,切开的部分再进行后续处理

                awk 'pattern {action}' test.txt

                        pattern  正则表达式

                        action   对匹配到的内容需要执行的命令(默认为输出每行内容)

                        test.txt   awk浏览的文件名

                        BEGIN  处理文本前要执行的操作

                        END    处理文本后要执行的操作

                        FS    设置输入域分隔符,等价于命令行 -F选项

                        NF   浏览记录的域的个数(列数)

                        NR  已读的记录行(行数)

                        $0   整条记录

                         $1  当前行的第一个域....$2 当前行的第二个域...以此类推

                awk -F: '/root/ {print $7}' /etc/passwd

                        1.awk 按行处理/etc/passwd文件中的每行数据;

                        2.将读取出的每行数据按“:”分割成域;

                        3.将每行经分割后的所有数据匹配正则/root/,匹配包含root的行;

                        4.将匹配到的行执行print $7操作,即打印第7域(列),得出最后数据。

             awk -F: 'NR==2{print $0}' /etc/passwd

                        1.awk 按行读取passwd文件中所有数据;

                        2.读取的数据按“:”分割为域;

                        3.匹配NR==2,第二行数据,并打印整行所有数据print $0.

awk -F: 'BEGIN{print "i love you"} {print $6,$7} END{print "do you love me?"}'  /etc/passwd

                        BEGIN  处理文本前要执行的操作

                        END    处理文本后要执行的操作

根据pid查看某进程所占用内存%MEM百分比 

猜你喜欢

转载自blog.csdn.net/qq_40132294/article/details/120518050