linux echo, sort, sed是初学linux shell script 的一些常用的命令。基本上来说,如果能够掌握了这些命令,我们就能写出一些不错的linux脚本。以下是我遇到的以下常用的echo,sort, sed等命令的一些应用;

1.  echo -e: BW="f25\nf50\nf75\nf100\n";

如果直接echo $BW, 结果是f25\nf50\nf75\nf100\n。所以我们必须加上-e选项才能实现换行的目的,即echo -e $BW

 
Note:echo -e 处理特殊字符
若字符串中出现以下字符,则特别加以处理,而不会将它当成一般文字输出:
\a 发出警告声;
\b 删除前一个字符;
\c 最后不加上换行符号;
\f 换行但光标仍旧停留在原来的位置;
\n 换行且光标移至行首;
\r 光标移至行首,但不换行;
\t 插入tab;
\v 与\f相同;
\\ 插入\字符;
\nnn 插入nnn(八进制)所代表的ASCII字符;

2. sort 排序: BW=`echo -e $BW|sed 's/f/f /g'|sort -ugk2|sed 's/ //g'`;

sed 's/f/f /g': 人为制造一个分隔符“ ”出来

sort -u:清除重复行

-g: 按照数字大小排序: 一般来说, 假如有五个数: 1  3 11 12 21, 它会按照第一个数的大小来排,即1 11 12 21 3, 加-g 或-n 之后,就会正常排序, 即1 3 11 12 21

-k: 一般和-t一起用, -t 是分隔符,默认为空格,sort-ugk2 其实是 sort -u -t " " -k2 -g。其中-k2, 是指按照分割符后面的值得大小排序

sed 's/ //g': 删除分隔符

Note: sort [-bcfMnrtk][源文件][-o 输出文件] 
补充说明:sort可针对文本文件的内容,以行为单位来排序。

参  数:
  -b   忽略每行前面开始出的空格字符。
  -c   检查文件是否已经按照顺序排序。

-u   除去重复行

-f   排序时,忽略大小写字母。
  -M   将前面3个字母依照月份的缩写进行排序。
  -n   依照数值的大小排序。compare according to string numerical value

-g  compare according to general numerical value
  -o<输出文件>   将排序后的结果存入指定的文件。
  -r   以相反的顺序来排序。

-R random排序
  -t<分隔字符>   指定排序时所用的栏位分隔字符。
  -k  选择以哪个区间进行排序。

参考:http://www.cnblogs.com/dong008259/archive/2011/12/08/2281214.html

3. sed: cat Runlist.txt | sed 's/^#.*//g'|sort -R;

假如Runlist.txt里面的内容是:

test_short/test_UL_CellID
test_short/test#_UL_DL_cfg .2
test_short/test_UL_MCS
#test_short/test_UL_RNTI in the adb list

cat Runlist.txt | sed 's/^#.*//g'|sort -R: 那么这句话是把以#开头的一行删除。

test_short/test_UL_CellID
test_short/test#_UL_DL_cfg .2
test_short/test_UL_MCS

cat Runlist.txt | sed 's/#.*//g'|sort -R: 那么这句话是把以#后面的内容删除。

test_short/test_UL_CellID

test_short/test_UL_MCS
test_short/test#

cat Runist.txt | sed '/#/d': 删除#出现的那一行

test_short/test_UL_CellID

test_short/test_UL_MCS

3a. 匹配数据,然后进行操作
只需要在上述的基础上加上正则匹配
sed "/匹配的模式/处理的方式" file.txt 
sed "/^root/d" file.txt 对开始有root的删除

cat Runist.txt | sed '/#/s/test_short/bugs/g/':  找到#出现的那一行,然后用bugs替换test_short

 

3b. 一个比较有趣的例子: 如何替换\n也就是把所有的行都归为一行

我们可以用tr来代替sed去做这件事情: tr "\n" "  ": 用空格把 \n换行替代

Note: sed [-nefr] [动作] 文件
参数:
-n 安静模式,在sed处理的时候,所有来自STDIN的数据都会被输出到终端,加上-n会只输出处理的哪行
-e 直接在命令列上进行sed动作编辑
-f 直接将sed的动作写在文件内
-r sed动作支持延伸的正则表达(默认只是基础正则)
-i 直接修改文件内容(慎用,尤其是用系统文件做练习的时候)非常有用,不加这个选项,只会在屏幕中print出来

动作:
a append:增加,在当前行的下一行增加
c   :取代,取代n1到n2之间的行
d delete:删除
i 插入,目前行的上一行插入
p 打印,常常与-n使用
s 取代,s/old/new/g

http://blog.csdn.net/hello_hwc/article/details/40118129

Linux echo, sort, sed 等一些命令总结的更多相关文章

  1. Linux之 sort,uniq,cut,wc命令详解

    sort sort 命令对 File 参数指定的文件中的行排序,并将结果写到标准输出.如果 File 参数指定多个文件,那么 sort 命令将这些文件连接起来,并当作一个文件进行排序. sort语法 ...

  2. linux awk,sort,uniq,wc,cut命令详解

    1.awk awk是行处理器: 相比较屏幕处理的优点,在处理庞大文件时不会出现内存溢出或是处理缓慢的问题,通常用来格式化文本信息 $ 表示当前行 $ 表示第一列 NF 表示一共有多少列 $NF 表示最 ...

  3. Linux下的sed流编辑器命令详解

    sed是stream editor的简称,也就是流编辑器.它一次处理一行内容,处理时,把当前处理的行存储在临时缓冲区中,称为“模式空间”(pattern space),接着用sed命令处理缓冲区中的内 ...

  4. linux sort,uniq,cut,wc命令详解

    linux sort,uniq,cut,wc命令详解 sort sort 命令对 File 参数指定的文件中的行排序,并将结果写到标准输出.如果 File 参数指定多个文件,那么 sort 命令将这些 ...

  5. Linux实战教学笔记12:linux三剑客之sed命令精讲

    第十二节 linux三剑客之sed命令精讲 标签(空格分隔): Linux实战教学笔记-陈思齐 ---更多资料点我查看 1,前言 我们都知道,在Linux中一切皆文件,比如配置文件,日志文件,启动文件 ...

  6. linux三剑客之sed命令

    一.前言 我们都知道,在Linux中一切皆文件,比如配置文件,日志文件,启动文件等等.如果我们相对这些文件进行一些编辑查询等操作时,我们可能会想到一些vi,vim,cat,more等命令.但是这些命令 ...

  7. Linux中使用sed命令或awk命令修改常规配置文件

    一.方案: Linux中使用sed命令或awk命令修改常规配置文件 二.步骤: 1.假设有一个a.txt,内容如下: #!/bin/bash aa= bbb= ccc= #ddd= 2.如果想要把里面 ...

  8. (转)linux sort,uniq,cut,wc命令详解

    linux sort,uniq,cut,wc命令详解 sort sort 命令对 File 参数指定的文件中的行排序,并将结果写到标准输出.如果 File 参数指定多个文件,那么 sort 命令将这些 ...

  9. 全网最详细的Linux命令系列-sed文本处理命令

    Sed简介 SED是一个非交互式文本编辑器,它可对文本文件和标准输入进行编辑,标准输入可以来自键盘输入.文本重定向.字符串.变量,甚至来自于管道的文本,与VIM编辑器类似,它一次处理一行内容,Sed可 ...

随机推荐

  1. iOS点击状态栏返回顶部问题。

    在适配点击状态栏返回顶部的时候,有一个viewcontroller里面有一个UITableView和一个UITextView,UITableView的cell里面没有UIScrollView和UITa ...

  2. oracle+ibatis 批量插入-支持序列自增

    首先请先看我前面一篇帖子了解oracle批量插入的sql:[oracle 批量插入-支持序列自增] 我用的ibatis2.0,sqlMap文件引入的标签如下: <!DOCTYPE sqlMap ...

  3. redis make时 提示 zmalloc.h:50:31: error: jemalloc/jemalloc.h:

    redis安装需要环境必备 gcc 但是若未先安装好gcc,make失败后再次 make 会提示如下错误 zmalloc.h:50:31: error: jemalloc/jemalloc.h: 这时 ...

  4. 查看已安装的CentOS版本信息:

    如何查看已安装的CentOS版本信息: 1)[root@localhost ~]# cat /proc/version Linux version 2.6.18-194.el5 (mockbuild@ ...

  5. uiautomator跑安卓端UI testing

    用uiautomator做安卓的app端的UI testing的环境搭建及编jar包和运行case的步骤如下: 1.新建java工程 2.右键properties, 添加junit4的library, ...

  6. REORG TABLE命令优化数据库性能

    [转]DB2日常维护——REORG TABLE命令优化数据库性能     一个完整的日常维护规范可以帮助 DBA 理顺每天需要的操作,以便更好的监控和维护数据库,保证数据库的正常.安全.高效运行,防止 ...

  7. FusionCharts制作报表使用XML导入数据时出现的中文乱码问题

    今天在使用FusionCharts制作报表时用XML导入数据,总是出现乱码问题,下面是我的解决方案. 让FusionCharts支持中文 刚刚将XML导入到html中后,在火狐浏览器一直报Invali ...

  8. ios -网络加载json和本地加载json

    1网络加载json的时候,要在模型的实现文件里写: - (void)setValue:(id)value forKey:(NSString *)key { } 2本地加载json的时候,要在模型的实现 ...

  9. js-我理解的闭包

    一:什么是闭包 <JS高级程序设计>指出:闭包是指有有权访问另一个函数作用域中变量的函数. 二:闭包的使用 闭包的常见的创建方式是 子函数嵌套在父函数的内部,这样,子函数就可以访问父函数中 ...

  10. C/C++入门基础----指针(1)

    指针其实就是一个变量, 和其他类型的变量一样.在32位计算机上, 指针占用四字节的变量.指针与其他变量的不同就在于它的值是一个内存地址,指向内存的另外一个地方, 指针能够直接访问内存和操作底层的数据, ...