2番目の列($2=="")
がヌルの場合は、$1
という値を出力し、次の2番目の列がnullの場合は($2=="")
と出力します。 はその後delete
に2番目の列は、私は成功せず、コマンド以下のように試してみましたawkが前回の値から塗りつぶした後に
Name,Subject,Marks,Desc,Details
Adam,English,10,xxx,xxx
Adam,Maths,20,yyy,yyy
Benn,English,10,xxx,xxx
Benn,Maths,20,yyy,yyy
Benn,Science,30,zzz,zzz
Zak,English,10,xxx,xxx
Zak,Maths,20,yyy,yyy
output.csv ($2=="")
file.csvになり
Name_Subject,Marks,Desc,Details
Adam,,,
English,10,xxx,xxx
Maths,20,yyy,yyy
Benn,,,
English,10,xxx,xxx
Maths,20,yyy,yyy
Science,30,zzz,zzz
Zak,,,
English,10,xxx,xxx
Maths,20,yyy,yyy
空であるすべての行...
が必要awk -F, 'NR==1{print; next} {if($2 == ""){$2=A}} {A=$2} 1' file.csv
編集#1
実際のファイルには、行の一部がデータの間に空白の一部が含まれています。このインスタンスでは、空の値を埋めていますが、前の空でない値を取り込むのが好きです。
file.csvになり
Name_Subject,Marks,Desc,Details
Adam,,,
English,10,xxx,xxx
Maths,20,yyy,yyy
Benn,,,
English,10,xxx,xxx
Maths,20,yyy,yyy
Science,30,zzz,zzz
,,,
,,,
History,40,zzz,zzz
Zak,,,
English,10,xxx,xxx
Maths,20,yyy,yyy
出力#1
Name,Subject,Marks,Desc,Details
Adam,English,10,xxx,xxx
Adam,Maths,20,yyy,yyy
Benn,English,10,xxx,xxx
Benn,Maths,20,yyy,yyy
Benn,Science,30,zzz,zzz
,History,40,zzz,zzz
Zak,English,10,xxx,xxx
Zak,Maths,20,yyy,yyy
あなたは十分な質問をして十分な答えを得て、一般的にawkを使って私の答えに説明が必要だとは思えませんでしたが、特定の質問がある場合は教えてください。論理を全く理解できない場合は、Arnold Robbinsの「Effective Awk Programming」第4版を読むことをお勧めします。 –
あなたはそれを後方に(つまり否定的に)考えています。あなたが削除する必要があるものについて考えないで、印刷する必要があるものについて考える。今度はそれをもう一度見て、それがより理にかなっているかどうかを見てください。 –
Ed Morton、Thanks a ton、Accepted and Up-Voted !!! – VNA