Chinaunix首页 | 论坛 | 博客

XX

  • 博客访问: 506777
  • 博文数量: 281
  • 博客积分: 0
  • 博客等级: 民兵
  • 技术积分: 562
  • 用 户 组: 普通用户
  • 注册时间: 2013-02-17 21:40
个人简介

XXX

文章分类

全部博文(281)

文章存档

2017年(1)

2015年(3)

2014年(117)

2013年(160)

我的朋友

分类: LINUX

2013-03-26 10:33:32

#!/bin/bash
# ignore_^M

INPUT_FILE=$1

if [ -s $INPUT_FILE ]; then
        sed -e 's/^M//g' $INPUT_FILE >output.tmp
        rm $INPUT_FILE
        mv output.tmp $INPUT_FILE
else
        echo "`basename $0`: Sorry $INPUT_FILE does not exist or is empty"
        exit 1
fi

原理分析:

先看一下产生控制字符的过程。以回车字符为例(在不同的系统上有^M、^@等形式)--

1、CTRL+V--此部过程产生“^”。注意,不是使用shift+6的上档键。

2、CTRL+M--与1配合即产生了^M控制字符。

sed的匹配模式:

's/内容1/内容2/g'

所以,模式's/^M//g' 可以把^M替换为空,也就是将^M删除。



    也可以使用vi编辑器进行处理,这样更为方便。

    利用vi编辑器打开要处理的文件,在命令模式下输入“:%s/^M//g”或者是“:1,s/^M//g”,然后保存一下。需要注意,^M的产生方法也是采用CTRL+V,然后按下CTRL+M。

阅读(1098) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~