天天看點

shell替換和去掉換行符

用shell處理檔案的時候我們常常需要去掉或者加上換行符,name問題就來了怎麼才能快速的替換呢?

我們有這樣一個檔案

<code>[root@hxy working]</code><code># cat 1</code>

<code>GD200A16C013493,GD200A16C013494,GD200A16C013495,GD200A16C013497</code>

我們需要把逗号去掉,換成換行符可以這樣做

<code>[root@hxy working]</code><code># cat 1|sed 's/,/\n/g'</code>

<code>GD200A16C013493</code>

<code>GD200A16C013494</code>

<code>GD200A16C013495</code>

<code>GD200A16C013497</code>

但是我們反過來了呢?就是把下面的換行替換為用逗号分開,sed反過來用就不行了,

<code>[root@hxy working]</code><code># cat 1|sed 's/,/\n/g'|sed 's/\n/,/g'</code>

我們可用awk來做用也行,如下:

<code>cat</code> <code>1|</code><code>sed</code> <code>'s/,/\n/g'</code><code>|</code><code>awk</code> <code>'{{printf"%s,",$0}}'</code>

這裡也可以用tr來處理,但是te來處理的話還需要手動删除最後一個逗号如下:

<code>[root@hxy working]</code><code># cat 1|sed 's/,/\n/g'|tr -s '\n' ','</code>

<code>GD200A16C013493,GD200A16C013494,GD200A16C013495,GD200A16C013497,[root@hxy working]</code><code>#</code>

<code>[root@hxy working]</code><code># cat 1|sed 's/,/\n/g'|tr -t '\n' ','</code>

<code>[root@hxy working]</code><code># cat 1|sed 's/,/\n/g'|tr '\n' ','</code>

<code></code>

本文轉自  Forande  51CTO部落格,原文連結:http://blog.51cto.com/853056088/1952430