2
我有一個輸入文件,它看起來像如何使用SED創建基於模式匹配多個文件或在awk
1S6290615260715DUTCH-ALDI ROTTERDAM, EUDOKIAPLEIN 8 00002961999
20000010019149GRANEN 0000000100000001590 0000111
20000010019592ALASKA KOOLVISFILET 0000001270000024003 0000111
20000010022614PAPRIKA 3 ST 0000000460000005934 0000111
1S6290615260715DUTCH-ALDI BERGEN NH, JAN OLDENBURGLAAN 00002962888
20000000000404BLEEKMIDDEL 0000000900000003150 0000222
20000000005197FRUIT 0000000430000005977 0000222
20000000006013ROOIBOSTHEE 0000000140000001246 0000222
1S6290615260715DUTCH-ALDI DWINGELOO, HEUVELENWEG 00002963777
20000000006469PITABROODJES 0000000610000004209 0000333
20000000007372SCHENKSTROOP 0000000210000001869 0000333
20000000007545HUISVUILZAKKEN 0000001080000012852 0000333
1S6290615260715DUTCH-ALDI BARNEVELD, CATHARIJNESTEEG 00002964666
20000000005197FRUIT + GRANEN BISCUITS 0000000720000010008 0000444
20000000005209IJSASSORTI MINIMIX 0000000190000003781 0000444
20000000006013ROOIBOSTHEE 0000000210000001869 0000444
我需要休息此文件到基於模式匹配多個文件。在這個文件中圖案化線開始1S6290615260715的基礎上,我需要創建多個文件,如
文件1:
1S6290615260715DUTCH-ALDI ROTTERDAM, EUDOKIAPLEIN 8 00002961999
20000010019149GRANEN 0000000100000001590 0000111
20000010019592ALASKA KOOLVISFILET 0000001270000024003 0000111
20000010022614PAPRIKA 3 ST 0000000460000005934 0000111
文件2
1S6290615260715DUTCH-ALDI BERGEN NH, JAN OLDENBURGLAAN 00002962888
20000000000404BLEEKMIDDEL 0000000900000003150 0000222
20000000005197FRUIT 0000000430000005977 0000222
20000000006013ROOIBOSTHEE 0000000140000001246 0000222
等。
使用AWK我試圖此命令
awk '/^1S/f++ {print $0 > "file"f}' input.txt
與此各文件與單線創建。
請建議要麼用awk或者sed的更快的處理方式,因爲我需要像15GB 20GB的非常大的文件,做到這一點,提供用於進一步處理這些分割的文件,以Hadoop框架。
它的工作,謝謝。你能否解釋一下「如果」和「關閉」 – Abhinay
我們應該關閉使用'> F'代碼所有打開的文件。 '如果(F)'只有當'F'變量被重新設置 – anubhava
感謝關閉..我不知道的打開和關閉的awk ..... '的awk「/^1S/{接近(‘文件’的概念, ˚F); F ++} {打印$ 0> 「文件」 F 「.TXT」}」 file'。我試着在沒有「if」的情況下稍微改變你的命令。它的工作也是。 – Abhinay