2012-04-15 63 views
0

对不起,如果我可能错过了这一点,而搜索SO。 我有以下结构如何使用AWK附加文本

AAAA21346A 
AAAA21346A 
AAAA21346A 
AAAA21346A 
. 
. 
. 

直到超过5万次卢比的记录(五十万条记录)的文本文件。

我想使用awk在每一行的前面附上^ N^1。如何做呢?

更新:

我的输出有看起来像这样:

AAAA21346A^N^1 
AAAA21346A^N^1 
AAAA21346A^N^1 
AAAA21346A^N^1 

,并以此类推,直到EOF。每条记录后必须有一个换行符。

**一些更多的解释* ** *
我使用DB2和Linux,因此我想在awk的。我想要做的是,我需要使用db2中的“load from”命令并使用^作为分隔符将数据插入带有3列的表中。但由于文本文件只包含一列,我想附加^ N^1使其成为3列。我希望你现在明白。

+1

这不是很清楚。你能告诉我们你想看到的输出样本吗?另外,[你有什么尝试](http://mattgemmell.com/2008/12/08/what-have-you-tried/)? – Graham 2012-04-15 04:38:34

+0

对不起。我的输出必须看起来像这样“AAAA21346A”^ N^1“AAAA21346A”^ N^1“AAAA21346A”^ N^1“AAAA21346A”^ N^1等等直到EOF。在每1个 – koderhash 2012-04-15 04:42:28

+0

之后,我还没有尝试过任何东西。我最近做的事情是导入excel中的所有行并附加所需的内容,然后使用^ v使用^分隔文件导出。这是工作奇妙地提供了100条记录......但地狱没有5个乳房,这将在几天内增加到50乳胶.. – koderhash 2012-04-15 04:45:43

回答

2

你想要什么似乎很简单:

awk '{print $0 "^N^1"}' data_file 

与添加线程ID唯一的问题是在算法决定这样做。例如,交流是很容易的事:

awk '{printf "%s^N^%d\n", $0, (NF % 2) + 1}' data_file 
+0

谢谢! – koderhash 2012-04-18 02:06:16

1

这里有一对夫妇更多的方法来做到这一点使用AWK:

awk 'BEGIN { ORS = "^N^1\n"} 1' inputfile 

,或者更明确:

awk 'BEGIN { ORS = "^N^1\n"} {print}' inputfile 

awk 'BEGIN { OFS = "^"} {$2 = "N"; $3 = 1}1' inputfile 

awk 'BEGIN { OFS = "^"} {$2 = "N"; $3 = 1; print}' inputfile 
+0

也谢谢!我对awk完全陌生,这真的帮助了我。 – koderhash 2012-04-18 02:06:08

+0

@koderhash - 不要忘了点击最有帮助的答案上的复选标记! – Graham 2012-04-19 11:10:42