数据:
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. centos下pg_dump的服务器版本不匹配问题

    pg_dump: server version: 9.4.4; pg_dump version: 8.2.4 pg_dump: aborting because of server version m ...

  2. html向servlet传乱码解决办法

    html 设置为utf-8格式 <meta http-equiv="content-type" content="text/html;charset=UTF-8&q ...

  3. Flask web应用

    Flask web应用 一.介绍 最近开发要用一个测试环境,是这样的Nginx+uwsgi+flask 的一个结构.下面是一些记录,在Centos 系统上使用Flask 架构部署一个简单的Python ...

  4. 说服式设计(persuasive design)的行为模型

    转自:http://www.sharetk.com/html/ued/User-Research/1404.html 一 模型简介 BJ Fogg提出了一个新的理解人类行为的模型,他称之为Fogg b ...

  5. HDU 1025 DP + 二分

    题目:http://acm.hdu.edu.cn/showproblem.php?pid=1025 求最长递增子序列,O(n^2)的复杂度超时,需要优化为O(n*logn) f[i]存储长度为i的最小 ...

  6. 基于visual Studio2013解决C语言竞赛题之0602最大值函数

     题目

  7. 疯牛-- Aggressive cows (二分)

    疯牛 时间限制:1000 ms  |  内存限制:65535 KB 难度:4   描述 农夫 John 建造了一座很长的畜栏,它包括N (2 <= N <= 100,000)个隔间,这些小 ...

  8. IT该忍者神龟Instant client required

    pply OS : Windows, Mac, Linux Apply Navicat Product : Navicat for Oracle, Navicat Premium Apply Navi ...

  9. 三、nginx301跳转302跳转

    301跳转设置: server { listen 80; server_name downcc.com; rewrite ^/(.*) http://www.downcc.com/$1 permane ...

  10. jquery插件讲解:轮播(SlidesJs)+验证(Validation)

    SlidesJs(轮播支持触屏)——官网(http://slidesjs.com) 1.简介 SlidesJs是基于Jquery(1.7.1+)的响应幻灯片插件.支持键盘,触摸,css3转换. 2.代 ...