数据:
test.txt:

f1:f2:f3:#

Shell:

#!/bin/bash
while read line
do
echo $line
result1=$(echo $line|awk -F ':' '{print $4}' )
echo $result1
echo "1:"${result1}"test" result=$(echo $line|awk -F ':' '{print $4}'|tr -d '\r' )
echo "2:"${result}"test" result=$(echo $line|awk -F ':' '{print $4}'|sed 's/\r//g')
echo "3:"${result}"test" #result=$(echo $line|awk -F ':' '{print $4}'|cut -d "\r" -f1)
#echo "4:"${result}"test" done<test.txt

输出:

f1:f2:f3:#
#
test1//这个输出很奇怪,预期是1:0#1test
:#1test
:#1test

使用cut会报错:

cut: the delimiter must be a single character
Try `cut --help' for more information.

http://www.51testing.com/html/38/225738-219038.html

一些基本的概念:

I/O重定向所谓I/O重定向简单来说就是一个过程,这个过程捕捉一个文件,或者命令,程序,脚本,甚至脚本中的代码块(code block)的输出,然后把捕捉到的输出,作为输入发送给另外一个文件,命令,程序,或者脚本;
FD(File Descriptor文件标识符) 谈到I/0重定向就不得不谈到FD,Linux系统中,系统为每一个打开的文件指定一个文件标识符以便系统对文件进行跟踪,文件标识符是一个大于0的整数, 不同数字代表不同的含义,shell的FD通常为10个,即 0~9;通常系统默认占用了3个,也是我们常用的,
分别是:
0(stdin标准输入),
1(stdout标准输出),
2(stderr标准错误),
默认与keyboard、monitor、monitor有关;
其余3-9是保留的标识符,可以把这些标识符指定成标准输入,输出或者错误作为临时连接。
通常这样可以解决很多复杂的重定向请求;
<用来改变读进的数据信道(stdin), 0 是 < 的默认值, 所以 < 与 0<是一样的;
>用来改变送出的数据信道(stdout, stderr), 1是 > 的默认值,故> 与 1> 也是一样的;
 
下面用一个例子来解释2>&1
$./test.sh > test.log 2>&1
首先根据上面介绍的内容,我们知道上面的命令还可以写为:
$./test.sh 1> test.log 2>&1
”1> test.log“就很容易理解了,就是将标准输入定向到test.log
“2>&1”的意思是将错误输出定向到和1一样的输出设备,也是test.log
 
如果想让输出结果不仅在屏幕显示,也写入文件,则可以使用tee命令 
 
上面命令还可以写为:
$./test.sh > test.log 2>test.log
同样是将错误输出到和1一样的test.log
那为什么我们要用2>&1呢?这是应为如果用command > file 2>file的写法,stdout和stderr都直接送到file中, file会被打开两次,这样stdout和stderr会互相覆盖,这样写相当使用了FD1和FD2两个同时去抢占file 的管道,而command >file 2>&1这条命令就将stdout直接送向file, stderr 继承了FD1管道后,再被送往file,此时,file 只被打开了一次,也只使用了一个管道FD1,它包括了stdout和stderr的内容.
从IO效率上,前一条命令的效率要比后面一条的命令效率要低;所以我们要使用2>&1
 
http://www.51testing.com/html/53/84753-218993.html
 

去掉Enter字符(\r)的几个方法的更多相关文章

  1. Android:认识R类、findViewById方法查找组件、@string查找字符、@color查找颜色、@drawable查找图片、@dimen某个组件尺寸定义、项目引入资源国际化

    导入 之前都是断断续续的看了一些于如何使用android开发的文章.资料等,到目前位置很多基础的东西都不清楚,于是去学习了别人的课程,才了认识了R类.findViewById方法查找组件.项目引入资源 ...

  2. EXCEL 导入 R 的几种方法 R—readr和readxl包

    导入Excel数据至R语言的几种方法 如有如下Excel数据源,如何将数据导入R语言呢?今天主要来介绍几种常见的方法: 一.使用剪贴板,然后使用read.table函数: 首先选择Excel中的数据源 ...

  3. C#三种判断字符是否为汉字的方法

    判断一个字符是不是汉字通常有三种方法,第一种用 ASCII 码判断,第二种用汉字的 UNICODE 编码范围判 断,第三种用正则表达式判断,以下是具体方法. 1.用ASCII码判断 在 ASCII码表 ...

  4. 【代码笔记】iOS-判断中英文混合的字符长度的两种方法

    一,代码. - (void)viewDidLoad { [super viewDidLoad]; // Do any additional setup after loading the view. ...

  5. java 21 - 6 字符缓冲流的特殊方法以及该方法高效复制文件

    字符缓冲流的特殊方法: A.BufferedWriter: public void newLine():根据系统来决定换行符 private static void write() throws IO ...

  6. Asp.Net判断字符是否为汉字的方法大全

    判断一个字符是不是汉字通常有三种方法: 第一种用 ASCII 码判断,缺点:把全角逗号“,”当汉字处理 第二种用汉字的 UNICODE 编码范围判 断, 第三种用正则表达式判断 1.用ASCII码判断 ...

  7. 如果是除去末尾特定字符或字符串:TrimEnd方法性能优于Remove方法

    测试用例--除去末尾特定字符或字符串,Remove方法和TrimEnd方法的比较 结论: 如果是除去末尾特定字符或字符串:TrimEnd方法性能优于Remove方法 具体测试用例如下: Stopwat ...

  8. 程氏CMS去掉静态页面的隐藏性版权方法

    程氏CMS去掉静态页面的隐藏性版权方法 实例如图: 因为之前自己找了好久都没找到这俩代码写在那个文件夹的,经过跟csqq8讨论了也没有得到结果,今天突然发现,原来这些代码都经过base64加密,用加密 ...

  9. R语言︱常用统计方法包+机器学习包(名称、简介)

    一.一些函数包大汇总 转载于:http://www.dataguru.cn/thread-116761-1-1.html 时间上有点过期,下面的资料供大家参考基本的R包已经实现了传统多元统计的很多功能 ...

随机推荐

  1. PHP学习笔记1-常量,函数

    常量:使用const(php5)声明,只能被赋值一次,php5以下版本使用define: <?php const THE_VALUE = 100;//PHP5中才有const echo THE_ ...

  2. MAC X OS 自定义分辨率

    1 vi /Library/Preferences/SystemConfiguration/com.apple.Boot.plist 2 3 将该文件修改成如下内容: 4 5 <key>G ...

  3. java项目打jar包的两种情况

    链接地址:http://jingyan.baidu.com/article/6b97984d8a6ddc1ca2b0bfa0.html 本文介绍一下java项目打jar包时的两种情况各怎么操作   方 ...

  4. Steve Yegge:Google面试秘籍

    我憋了很长时间想写点关于去Google面试的秘籍.不过我总是推迟,因为写出来的东西会让你抓狂.很可能是这样.如果按统计规律来定义"你"的话,这文章很可能让你不爽. 为啥呢?因为啊- ...

  5. BZOJ 4177: Mike的农场( 最小割 )

    显然是最小割... 对于规律(i, j, k) i,j 互相连边, 容量为k 对于规则(S, a, b) 新建一个点x, x与S中每个点连一条弧, 容量+∞, 然后再根据a决定x与源点或汇点连边. 跑 ...

  6. Mars的mp3实例

    Mars的mp3实例第一课: 关于menu: package mars.mp3player01; import mars.down.HttpDownloader; import android.app ...

  7. 三个API:开启、关闭、关闭线程重定向

    C:\Windows\sysnative\ 这个目录是作什么用的?来源:互联网 责任编辑:小易 时间:2015/11/13 0:17:19用户提出问题:C:\Windows\sysnative\ 这个 ...

  8. Android应用开发经常使用知识

    在其它站点看到的,Mark一下 1.近期打开的应用不在近期任务列表中显示 android:excludeFromRecents="true" 设置为true,则排除在近期任务列表之 ...

  9. 集群安装配置Hadoop具体图解

    集群安装配置Hadoop 集群节点:node4.node5.node6.node7.node8. 详细架构: node4 Namenode,secondnamenode,jobtracker node ...

  10. Ch02 从零开始实例学习3

    提纲:---------------------------- 演练2-3:添加控制器 知识点2-3:控制器的职责 知识点2-4:控制器的类别与方法 ------------------------- ...