首页 > 代码库 > 7,文本处理、重定向、管道、bash算术运算、脚本 输入

7,文本处理、重定向、管道、bash算术运算、脚本 输入

文本处理类命令:

    wc, tr, cut, sort, uniq, 一共 就这 几个, 都 挺简单 的, 不过 非常常用,


1、 wc : 这个 是 做 字符 统计 的 命令, 

    wc [选项] [文件]...

        -l : 统计行数

        -c : 统计字节数

        -w : 统计单词数(这里 的 单词 指的是 以 空格 分隔 的 字符串)

wKiom1RZ-w2BShVmAABd2silW9U327.jpg


2、 tr : 转换字符 或 删除 字符, 这个 命令 主要 用于 大小写 转换,字符串 替换 或 删除

        -d : 表示 删除 字符 串

wKioL1RZ_HuQ6TDYAAB_6ygBJoY220.jpg


3、 cut : 剪切文本, 这里 的 文本 都是 单行 的, 也就是 cut 一次 只能 处理 一行 文本

        -d字符: 指定分隔符

        -f#: 指定要显示的字段

                单个数字: 显示一个字段

                多个数字,以 逗号 分隔: 显示多个字段

                -: 连续字段, 如 3-5

wKioL1RZ_jywSIcpAAEKyKqOVc4113.jpg


4、 sort : 排序, 默认是以字符排序的,也就是ASCII码的值排序的,不过也可以指定数值排序。

    sort [option] file...

            -f:忽略字符大小写

            -n:比较数值大小

            -t:指定分隔符

            -k:指定分隔后进行比较的字段

            -u:重复的行,只显示一次

wKiom1RaAHLTyrKQAAByHJ6nIhY921.jpg

强调一下,sort默认是以行为单位处理文件的。。


5、 uniq

    -c: 显示重复的行的次数

    -d: 仅显示重复的行

    -u: 显示不曾重复的行

wKioL1RaAwngM67mAACljzV-pOw335.jpg

ok, 这里 还是 说 两个 练习 把, 

练习1: 统计/bin、/usr/bin、/sbin和/usr/sbin等各目录中的文件个数;

        # ls /bin | wc -l

练习2: 2、显示当前系统上所有用户的shell,要求,每种shell只显示一次;

        # cut -d: -f7 /etc/passwd | sort -u


重定向:

    系统 默认 是把输出 的 信息 显示到 显示器上的,不过 有些 时候 我们 希望 把 显示 的 信息 直接 存储 成 一个 文件, 这个 时候 就 需要 重定向 了。。

    输入 和 输出 其实 是 分为 三种 的, 这些 信息 默认 都是 显示 的 显示器 上 的。。

            标准输入: stdin :  0

            标准输出: stdout : 1

            标准错误: stderr : 2


I/O 重定向:

    输入重定向:

           < 命令 < 文件  : 这个 表示 命令 以 文件 的 形式 获取 stdin(以前是靠键盘输入的。。。)

              << :   命令 << 标记字符串: 这个 叫做 Hear document, 从 stdin 中 读入, 直到遇到 标记字符串 停止wKioL1RaCPnzfRHbAACuz35MGQ0437.jpg

输入重定向:

            >  : 命令 > 文件  :  将命令的 输出 保存至 文件(会清空文件的原有内容)

            >>  :  命令 >> 文件  :  将命令的输出 追加 到 文件, 这个 不会 清空 原有 文件 了。。

            set -C    :  禁止使用 > 命令, 因为 这个 命令 比较危险,

            set +C   : 允许使用 > 命令

            >|   :   当 > 命令 禁止 时 可以 用 这个, 这个 表示 强制 使用 的 意思。

      /dev/null  : 这个 是 一个 文件, 也叫做 位桶, 无论 向 里面 重定向 什么 都会清空wKiom1RaC9Lyy-GxAAClJ5sRCT4399.jpg

这里 把 id 命令 的 输出 结果 重定向 进 了 位桶(感觉就是垃圾桶。。), 之后 我们 看 一下 这个 命令 是否 执行 成功。 , 成功 了 就 说明 这个 用户 存在, 貌似 就是 这么 用 的。


错误重定向:   这个 和 输入 重定向 是 差不多 的, 

    2>  :   覆盖

    2>> :   追加

       

这里 说 一下 , 一个 命令 执行 成功 的 信息 和 执行 错误 的 信息 不是 一样 的, 所以 如果 使用 输出 重定向, 当 文件 执行 失败 时, 他 还是 会 显示 错误 信息 的。。wKioL1RaDV2QPi2wAABE80vrgKs242.jpg    

输出 和 错误 重定向: 这个 就是 输出重定向 和 错误重定向 的 合体 了。。

    &>  : 覆盖

    &>> : 追加


管道:

这个以前 就 说过 了, |  表示 把 上一个 命令 的 执行 结果 当做 下一个 命令 的 输入, 也 是 一直 在 用 的说。。


tee  :  将标准输入的内容输出到屏幕上,并且存储到文件中。相当于 一个 三项接口 把。。, 一个 输入 , 两个 输出。。

wKiom1RaDvKAImupAAB1ndL8O4U753.jpg

这个命令 貌似 也会 覆盖 文件 的。 


bash中的算术运算:


declare  :  定义变量 时 定义 变量 的 类型

        -i  : 整数

        -x  : 环境变量

let  var_name=算术表达式  ,  使用 let 命令 就可以 进行 算术 运算 了。。

var_name=$[算术表达式] , 算术运算 的 第二种 方法。。

((var_name=算术表达式)) , 算术表达式 的 第三种 方法。。, 坑! 就 没有 个 唯一 方法 么

var_name=`expr $num1 + $num2`  , 这个 是 第四种。。, 服了, bash 一直 都是 乱七八糟 的

wKioL1RaE6KhVHW1AAEsdmsUwhg299.jpg



read 和 单步执行:


read : 输入,读入 的 意思。。

read I   表示 读入 I 变量, 需要 和 用户进行 交互, 等待 用户 输入

        -t    :   等待 用户 输入 信息 的 时间

        -p "字符串"  : 在 读入 时 显示 一个 字符串。

wKiom1Ra4I7ARolEAABps_292T4071.jpg

wKioL1Ra4POT03g7AACTbv4u3j0184.jpg


单步执行   :   bash -x 脚本名


练习:  输入 两个 整数 A, B , 其中 A < B, 求 A 到 B 之间 所有 整数 之和。

wKioL1Ra46nTXoqpAABtpClfocc303.jpg

现在 单步 执行 一下。。, 看 下 过程。

wKioL1Ra4_yRFqziAADb9CtGso4621.jpg

本文出自 “宁静淡泊” 博客,请务必保留此出处http://vrgfff.blog.51cto.com/6682480/1572815

7,文本处理、重定向、管道、bash算术运算、脚本 输入