6月 262019
 

一般来讲,这个事儿是sed该干的,但是,sed做起来也不那么简单,可能每次写都需要问百度。

bash如何实现呢?

这里涉及了三种情况:

  1. 空行(空字符)
  2. 行首空字符
  3. 行尾空字符
  4. 空字符可能是空格有可能是tab,一般也就这两种情况了

写起来是不是比较麻烦?

脚本:

简直不敢相信,远比sed要简单的多吧。

因为read自然帮我们去的掉了行首行尾的空白了。

不过需要注意的是:

  1. 这里echo的$line 是加了双引号的,如果没有双引号,echo 就会帮我们把line中间的空格或tab给吃掉,连续的空白只剩余一个空格;加入我们想要的就是这种效果的话,你们直接去掉双引号就行了,省却考虑相关处理逻辑了
  2. 如果文件中含有类似 “a\+b\c” 这种包含了\ 的字符串,处理完之后, \ 就没了; 所以,上面的处理方式有局限性
  3. 如果文件是二进制文件,也不能这样处理

 

关于echo “$line” 中双引号的作用:

假如 line=”1 2    3″

echo $line   等效于  echo 1 2   3  ;根据我们基本的认知,2和3中间有多少个空格都等于1个空格,对于echo来讲都是3个参数

echo “$line” 等效于 echo “1 2   3” ; 这里的echo接收到的是1个参数,自然不能随意丢掉其中的空格

 Posted by at 下午 3:41

 Leave a Reply

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code class="" title="" data-url=""> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong> <pre class="" title="" data-url=""> <span class="" title="" data-url="">

(required)

(required)

此站点使用Akismet来减少垃圾评论。了解我们如何处理您的评论数据