2014-01-26 35 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实用程序,因为它是最简单的,最明确的意图。