2012-04-15 67 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