2014-01-26 36 views
0

我對Linux很新,我仍然在學習這些命令。我想要做的就是格式化我的.txt文件。我該如何grep/awk?

這裏是我的文件看起來像:

hello hello 
goodbye goodbye 
random random 
example example 
last last 

所有我想要做的就是刪除空格,並用分號替換它。

例如:

hello:hello 
goodbye:goodbye 
random:random 
example:example 
last:last 

我不知道是什麼命令將完成這個任務,我敢肯定它的grep或awk的。如果有人能幫助我解決這個問題,那將會很棒。謝謝,所有幫助表示讚賞。

+1

此問題似乎是脫離主題,因爲它屬於unix.stackexchange.com。 – Barmar

+0

[File Formatting:Confusion using awk NR Variable]的可能重複(http://stackoverflow.com/questions/7941997/file-formatting-confusion-using-awk-nr-variable) – jww

回答

2

sed是此任務的最簡單的工具:

sed 's/ /:/' infile > outfile 
1

您需要使用流編輯器sed由冒號來代替空間,如下所示: SED -i 'S//:/' 文件名 哪裏filename是你的文件。

2

隨着tr(翻譯所有空格冒號)

tr ' ' ':' 

隨着sed(取代用冒號所有空格)

sed 's/ /:/g' 

隨着awk(然後改變輸出字段分離器重新計算/輸出$0每個線)

awk 'BEGIN{OFS=":"}{$1=$1;print}' 

用Perl(標準-pne讀取 - 求值 - 輸出循環替換字符):

perl -pne 's/ /:/g' 

對於C過濾程序,因爲這是編程Q & A位:-)

// Call with: progName <infile 

#include <stdio.h> 
int main (void) { 
    int ch; 
    while ((ch = getchar()) != EOF) { 
     if (ch == ' ') ch = ':'; 
     putchar (ch); 
    } 
    return 0; 
} 

也可能有很多其他的方式來做到這一點,但我可能會選擇tr實用程序,因爲它是最簡單的,最明確的意圖。