一、wc

wc命令的功能为统计指定文件中的字节数、字数、行数,并将统计结果显示输出。

测试文件内容:

(my_python_env)[root@hadoop26 ~]# cat test
hnlinux
peida.cnblogs.com
ubuntu
ubuntu linux
redhat
Redhat
linuxmint

1.1最基本的用法

(my_python_env)[root@hadoop26 ~]# wc test
test

其中7代表行数

8是单词书,一个单词被定义为由空格、制表符或者换行符分割的字符串

70是字节数

1.2-l计算行数

(my_python_env)[root@hadoop26 ~]# wc -l test
test

1.3-w计算单词数

(my_python_env)[root@hadoop26 ~]# wc -w test
test

1.4-c计算字节数

(my_python_env)[root@hadoop26 ~]# wc -c test
test

1.5-L打印最长行的长度

(my_python_env)[root@hadoop26 ~]# wc -L test
test

1.6用wc命令怎么做到只打印统计数字不打印文件名?

使用管道可以做到,这在shell脚本中特别有用

(my_python_env)[root@hadoop26 ~]# cat test | wc -l

二、sed

sed 是一种在线编辑器,它一次处理一行内容。处理时,把当前处理的行存储在临时缓冲区中,称为“模式空间”(pattern space),接着用sed命令处理缓冲区中的内容,处理完成后,把缓冲区的内容送往屏幕。接着处理下一行,这样不断重复,直到文件末尾。文件内容并没有 改变,除非你使用重定向存储输出。Sed主要用来自动编辑一个或多个文件;简化对文件的反复操作;编写转换程序等。

2.1sed的使用参数

[root@www ~]# sed [-nefr] [动作]
选项与参数:
-n :使用安静(silent)模式。在一般 sed 的用法中,所有来自 STDIN 的数据一般都会被列出到终端上。但如果加上 -n 参数后,则只有经过sed 特殊处理的那一行(或者动作)才会被列出来。
-e :直接在命令列模式上进行 sed 的动作编辑;
-f :直接将 sed 的动作写在一个文件内, -f filename 则可以运行 filename 内的 sed 动作;
-r :sed 的动作支持的是延伸型正规表示法的语法。(默认是基础正规表示法语法)
-i :直接修改读取的文件内容,而不是输出到终端。 动作说明: [n1[,n2]]function
n1, n2 :不见得会存在,一般代表『选择进行动作的行数』,举例来说,如果我的动作是需要在 10 到 20 行之间进行的,则『 10,20[动作行为] 』 function:
a :新增, a 的后面可以接字串,而这些字串会在新的一行出现(目前的下一行)~
c :取代, c 的后面可以接字串,这些字串可以取代 n1,n2 之间的行!
d :删除,因为是删除啊,所以 d 后面通常不接任何咚咚;
i :插入, i 的后面可以接字串,而这些字串会在新的一行出现(目前的上一行);
p :列印,亦即将某个选择的数据印出。通常 p 会与参数 sed -n 一起运行~
s :取代,可以直接进行取代的工作哩!通常这个 s 的动作可以搭配正规表示法!例如 1,20s/old/new/g 就是啦!

2.2d删除

将/etc/passwd的内容列出并且列出行号,同时,将2~5行删除

(my_python_env)[root@hadoop26 ~]# nl /etc/passwd | sed '2,5d'
root:x:::root:/root:/bin/bash
sync:x:::sync:/sbin:/bin/sync
shutdown:x:::shutdown:/sbin:/sbin/shutdown
halt:x:::halt:/sbin:/sbin/halt
mail:x:::mail:/var/spool/mail:/sbin/nologin

注意sed后面接的动作需要使用单引号

只删除第2行

(my_python_env)[root@hadoop26 ~]# nl /etc/passwd | sed '2d'
root:x:::root:/root:/bin/bash
daemon:x:::daemon:/sbin:/sbin/nologin
adm:x:::adm:/var/adm:/sbin/nologin
lp:x:::lp:/var/spool/lpd:/sbin/nologin

删除第3行到最后一行

(my_python_env)[root@hadoop26 ~]# nl /etc/passwd | sed '3,$d'
root:x:::root:/root:/bin/bash
bin:x:::bin:/bin:/sbin/nologin

2.3a和i选项的增加

在/etc/passwd第三行增加一行

(my_python_env)[root@hadoop26 ~]# nl /etc/passwd | sed '2a this is a extend row'
root:x:::root:/root:/bin/bash
bin:x:::bin:/bin:/sbin/nologin
this is a extend row
daemon:x:::daemon:/sbin:/sbin/nologin
adm:x:::adm:/var/adm:/sbin/nologin

上面的需求还可以使用-i选项来实现

(my_python_env)[root@hadoop26 ~]# nl /etc/passwd | sed '3i this is a extend row'
root:x:::root:/root:/bin/bash
bin:x:::bin:/bin:/sbin/nologin
this is a extend row
daemon:x:::daemon:/sbin:/sbin/nologin
adm:x:::adm:/var/adm:/sbin/nologin

2.4-c选项的替换

将2~5行的内容替换掉

(my_python_env)[root@hadoop26 ~]# nl /etc/passwd | sed '2,5c 2-5 rows'
root:x:::root:/root:/bin/bash
- rows
sync:x:::sync:/sbin:/bin/sync
shutdown:x:::shutdown:/sbin:/sbin/shutdown

2.5-n和-p

仅列出文件的5-7行

(my_python_env)[root@hadoop26 ~]# nl /etc/passwd | sed -n '5,7p'
lp:x:::lp:/var/spool/lpd:/sbin/nologin
sync:x:::sync:/sbin:/bin/sync
shutdown:x:::shutdown:/sbin:/sbin/shutdown

2.6数据搜寻

搜索有root关键字的行

(my_python_env)[root@hadoop26 ~]# nl /etc/passwd | sed -n '/root/p'
root:x:::root:/root:/bin/bash
operator:x:::operator:/root:/sbin/nologin

搜索有root关键字的行,并删除

(my_python_env)[root@hadoop26 ~]# nl /etc/passwd | sed  '/root/d'
bin:x:::bin:/bin:/sbin/nologin
daemon:x:::daemon:/sbin:/sbin/nologin
adm:x:::adm:/var/adm:/sbin/nologin
lp:x:::lp:/var/spool/lpd:/sbin/nologin

数据搜寻+执行命令

搜索/etc/passwd,找到root对应的行,执行后面花括号中的一组命令,每个命令之间用分号分隔,这里把bash替换为blueshell,再输出这行:

(my_python_env)[root@hadoop26 ~]# nl /etc/passwd | sed -n '/root/{s/bash/blueshell/;p}'
root:x:::root:/root:/bin/blueshell
operator:x:::operator:/root:/sbin/nologin

如果只替换/etc/passwd的第一个bash关键字为blueshell,就退出

(my_python_env)[root@hadoop26 ~]# nl /etc/passwd | sed -n '/root/{s/bash/blueshell/;p;q}'
root:x:::root:/root:/bin/blueshell

最后的q是退出

2.7数据搜寻与替换

除了整行的处理模式之外, sed 还可以用行为单位进行部分数据的搜寻并取代。基本上 sed 的搜寻与替代的与 vi 相当的类似!他有点像这样:

sed 's/要被取代的字串/新的字串/g'

(my_python_env)[root@hadoop26 ~]# /sbin/ifconfig eth0 | grep 'inet addr' | sed 's/^.*addr://g'
192.168.223.129 Bcast:192.168.223.255 Mask:255.255.255.0

接下来则是删除后续的部分,亦即: 192.168.1.100 Bcast:192.168.1.255 Mask:255.255.255.0

(my_python_env)[root@hadoop26 ~]#  /sbin/ifconfig eth0 | grep 'inet addr' | sed 's/^.*addr://g' | sed 's/Bcast.*$//g'
192.168.223.129

2.8多点编辑

一条sed命令,删除/etc/passwd第三行到末尾的数据,并把bash替换为blueshell

(my_python_env)[root@hadoop26 ~]# nl /etc/passwd | sed -e '3,$d' -e 's/bash/blueshell/'
root:x:::root:/root:/bin/blueshell
bin:x:::bin:/bin:/sbin/nologin

-e表示多点编辑,第一个编辑命令删除/etc/passwd第三行到末尾的数据,第二条命令搜索bash替换为blueshell。

文本处理命令--wc、sed的更多相关文章

  1. linux常用文本编缉命令(strings/sed/awk/cut)

    一.strings strings--读出文件中的所有字符串 二.sed--文本编缉 类型 命令 命令说明 字符串替换 sed -i 's/str_reg/str_rep/' filename 将文件 ...

  2. 文本处理命令(sort+uniq+cut+tr+wc)+三剑客之sed

    目录 文本处理命令+三剑客之sed 一.文本处理命令 1.排序命令 sort 2.检查/删除命令 uniq 3. cut 显示特定部分命令 4. 替换或删除命令 tr 5.统计 计算数字命令 wc 二 ...

  3. 文本处理命令 cat more less cut wc sort uniq

    1.cat       cat主要功能: 1.一次显示整个文件. cat filename 2.从键盘创建一个文件. cat > filename   (只能创建新文件,不能编辑已有文件). 1 ...

  4. 常用文本处理命令 & 三剑客之 sed

    今日内容 文本处理命令 Linux 三剑客之 sed 内容详细 文本处理命令 1.sort : 文件内容排序 默认按照文件隔行内容的第一个字符大小进行排序(默认是升序) 默认输出文本结果 sort [ ...

  5. 文本处理三剑客之sed命令

    第十八章.文本处理三剑客之sed命令 目录 sed介绍 sed命令常用选项 sed常用编辑命令 sed使用示例 sed高级语法 18.1.sed简介 sed全名stream editor,流编辑器,s ...

  6. 文本处理三剑客之 Sed ——一般编辑命令

    sed简介 sed (stream editor for filtering and transforming text) 是Linux上的文本处理三剑客之一,另外两个是grep和awk. sed又称 ...

  7. 【转】如何利用多核CPU来加速你的Linux命令 — awk, sed, bzip2, grep, wc等

    如何利用多核CPU来加速你的Linux命令 — awk, sed, bzip2, grep, wc等   你是否曾经有过要计算一个非常大的数据(几百GB)的需求?或在里面搜索,或其它操作——一些无法并 ...

  8. 【OS_Linux】三大文本处理工具之sed命令

    1.sed命令的简介及用法 sed:即为流编辑器,“stream editor”的缩写.他先将源文件读取到临时缓存区(也叫模式空间)中,再对满足匹配条件的各行执行sed命令.sed命令只针对缓存区中的 ...

  9. Linux学习之文本处理命令(五)

    ---恢复内容开始--- Linux 系统之文本处理命令 (一)基于关键字搜索 (二)基于列处理文本 (三)文本统计 (四)文本排序 (五)删除重复行 (六)文本比较 (七)处理文本内容 (八)搜索替 ...

随机推荐

  1. [ActionScript 3.0] AS3.0 本机鼠标指针

    Flash Player 10.2添加了内置的本机鼠标指针(native mouse cursor)支持,虽然在之前的版本里我们可以侦听MouseEvent事件来模拟鼠标指针,但是在有了原生的本机鼠标 ...

  2. java学习___File类的创建

    一.使用File创建文件 File file = new File("."+File.separator+"data.dat"); //如果不存在则创建 fil ...

  3. 最最基层的ajax交互代码jquery+java之间的json跨域传递以及java的json代码返回

    首先导入jar包 上面的jar包主要是用来将map或list数据转换成json字符串,传递到前台使用. 静态页面的代码:2.html <!DOCTYPE html> <html> ...

  4. 页面设计--RadioButton

    RadioButton单选控件支持多分组模式 属性如下图 设计: web显示效果图:

  5. NOIP201305转圈游戏

    2016.1.25 试题描述 有n个小伙伴(编号从0到n-1)围坐一圈玩游戏.按照顺时针方向给n个位置编号,从0到n-1.最初,第0号小伙伴在第0号位置,第1号小伙伴在第1号位置,……,依此类推.   ...

  6. What is Split Brain in Oracle Clusterware and Real Application Cluster (文档 ID 1425586.1)

    In this Document   Purpose   Scope   Details   1. Clusterware layer   2. Real Application Cluster (d ...

  7. php mysql_affected_rows获取sql执行影响的行数

    php mysql_affected_rows函数用于获取执行某一SQL语句(如INSERT,UPDATE 或 DELETE )所影响的行数,本文章向大家介绍php mysql_affected_ro ...

  8. Android——拖动条SeekBar

    1.activity_seekbar.xml <?xml version="1.0" encoding="utf-8"?><LinearLay ...

  9. Eclipse is running in a JRE, but a JDK is required 解决方法

    本文非原创,转自http://liguoliang.com/2010/eclipse-is-running-in-a-jre-but-a-jdk-is-required/ 安装Maven后每次启动出现 ...

  10. 剑指Offer:面试题5——从尾到头打印链表(java实现)

    问题描述:输入一个链表的头结点,从尾巴到头反过来打印出每个结点的值. 首先定义链表结点 public class ListNode { int val; ListNode next = null; L ...