Awk:列に沿って最初のフィールドを展開

Awk:列に沿って最初のフィールドを展開

いくつかのawkスクリプトが必要なタスクがあります。

ファイルがあるとしましょう。

A,under1
,under2
,under3
,under4
,under5
B,new1
,new2
,new3
C,sm1
,sm2

どのようにawkを使用して次のように作成できますか?

A,under1
A,under2
A,under3
A,under4
A,under5
B,new1
B,new2
B,new3
C,sm1
C,sm2

つまり、列に沿って最初のフィールドを拡張したいと思います。

ベストアンサー1

一方通行:

$ awk -F, '!$1{$1=p;}$1{p=$1;}1' OFS=, file

$1{p=$1;}$ 1に値がある場合は変数pに保存します。

!$1$1が空であることを意味します。 $ 1が空の場合は、$ 1を最後の$ 1の値を含むpに設定します。

1各行を印刷します。

おすすめ記事