数据:
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. UASCO Zero Sum DFS + Stack

    给一个N 表示1 2 3 ...N 求出所有 zero sum的情况 [简单Dfs 即可] 运算结果的时候我使用了一个stack... 比如N = 7 那么要求输出 1+2-3+4-5-6+7 1+2 ...

  2. Net Core在Linux环境

    Net Core在Linux环境 基础环境和相关软件准备 1.CentOS7.1 64位系统(或者其他CentOS版本的64位系统) 2.WinSCP软件(主要是方便管理和编辑Linux系统的文件) ...

  3. 转:MySql的commit和rollback

    从功能上划分,SQL 语言可以分为DDL,DML和DCL三大类.1. DDL(Data Definition Language)     数据定义语言,用于定义和管理 SQL 数据库中的所有对象的语言 ...

  4. #AzureChat - 自动伸缩和虚拟机

    我们很高兴地推出再一次 #AzureChat,这是 @WindowsAzure 团队为您精心打造的一个在 Twitter 上进行的聊天活动! #AzureChat 专注于云计算的各个方面以及云开发的最 ...

  5. 《UNIX环境高级编程》笔记--sync、fsync和fdatasync函数

    传统的UNIX实现在内核中设有缓冲区高速缓存或页面高速缓存,大多数磁盘 I/O都通过缓冲进行.当将数据写入文件时,内核通常先将该数据复制到其中一个缓冲区中,如果该缓冲区尚未写满,则并不将其排入输出队列 ...

  6. 【Android LibGDX游戏引擎开发教程】第06期:图形图像的绘制(下)图片整合工具的使用

    在上一篇文章中,我们提到了图片必须是2的n次方的问题.但是随着Libgdx的不断完善和发展,使用一些工具就 可以很好的解决了这样一个问题,但是它的功能又不仅仅只限于此,那么下面就来让我们看看Textu ...

  7. PS图片

    第二次练习PS,不知道找什么图片,就这么做着吧.然后自己学习了下动画制作,但是中间有些问题,需要再研究研究. 像 CS6中新建蒙版文档,画出的图形单位是厘米,怎么改为像素?(答案看后续博客....)

  8. libevent: linux安装libevent

    http://libevent.org/上下载最新的libevent, 如 libevent-2.0.22-stable.tar.gz. 然后解压,按照README里面的步骤安装.

  9. git教程1

    主要参考: 官方书籍: Pro Git 中文版:http://git.perlchina.org/book/zh 英文版:http://git.perlchina.org/book http://gi ...

  10. [置顶] getline函数-linux

    头文件: #include <stdio.h> 函数: ssize_t getline(char **lineptr, size_t *n, FILE *stream); eg: ssiz ...