我有可細分爲塊,看起來像這樣的文本文件:awk中:數據編輯塊單獨
富:一個
條:乙
蝙蝠:C富: d
條:電子
蝙蝠:F...
有沒有一種方法可以單獨編輯每個塊(即,爲該塊運行一組規則,然後移動到下一個塊)?
結果應該是這個樣子:
富:AB
吧:BC
蝙蝠:C富:德
條:EF
蝙蝠:F...
我沒有看到如何通過適用於整個文件的規則來實現這一點。
我有可細分爲塊,看起來像這樣的文本文件:awk中:數據編輯塊單獨
富:一個
條:乙
蝙蝠:C富: d
條:電子
蝙蝠:F...
有沒有一種方法可以單獨編輯每個塊(即,爲該塊運行一組規則,然後移動到下一個塊)?
結果應該是這個樣子:
富:AB
吧:BC
蝙蝠:C富:德
條:EF
蝙蝠:F...
我沒有看到如何通過適用於整個文件的規則來實現這一點。
隨着awk
可以設置記錄分隔符和字段分隔符任何你所需要的。默認情況下,字段分隔符是空格,第二個分隔符是\n
。您希望將記錄分隔符設置爲空行並將字段分隔符設置爲:
。
awk '{printf "%s:%s%s\n%s:%s%s\n%s:%s\n\n",$1,$2,$4,$3,$4,$6,$5,$6}' FS=: RS= file
foo: a b
bar: b c
bat: c
foo: d e
bar: e f
bat: f
你沒有說明你正在做什麼,我猜數據轉換隻是一個例子,所以他們可能是一個更好的方法。
爲您工作?
awk -v RS="" -F'\n' '{for(i=1;i<=NF-1;i++){split($(i+1),x," ");$i=$i" "x[2];print $i}print $NF;print RS}' file
與您的數據:
kent$ echo "foo: a
bar: b
bat: c
foo: d
bar: e
bat: f"|awk -v RS="" -F'\n' '{for(i=1;i<=NF-1;i++){split($(i+1),x," ");$i=$i" "x[2];print $i}print $NF;print RS}'
foo: a b
bar: b c
bat: c
foo: d e
bar: e f
bat: f
還沒有嘗試過是的,但這應該工作。謝謝。 – ArtVandelay 2013-04-06 18:05:48
是的,實際數據有點複雜,但我認爲這正是我所尋找的。謝謝。 – ArtVandelay 2013-04-06 18:08:19