いくつかの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
各行を印刷します。
答え2
別の解決策:
awk -F, '{$1=$1?P=$1:P;print}' OFS=,
$ 1が空でない場合は、P
$ 1に設定します。P
それ以外の場合は、$ 1を以前の値に設定します。