2つの列があり、1つの列には20個のデータがあり、2番目の列には16個のデータがあります。だから、2列の長さが同じになることを望みます。では、どのようにゼロを追加しますか?次のファイルがあります。
1 2
3 4
4 5
7
8
8
したがって、最初の列には6つの要素があり、2番目の列には3つの要素があります。だから私は2番目の列に0を追加して2つの列を同じにしたいと思います。したがって、出力ファイルは次のようになります。
1 2
3 4
4 5
7 0
8 0
8 0
答え1
そしてawk
:
awk 'NF < 2 {$2 = 0}; 1' < file
0
与えられたレコードのフィールド数()がNF
2より小さい場合、2番目のフィールドはに設定されます。
これは、フィールドのない行(空の行)に対して提供されます" 0"
。代わりに、次のことができます。
awk 'NF < 1 {$1 = 0}; NF < 2 {$2 = 0}; 1' < file
ORこの行を使用するには"0 0"
:
awk 'NF && NF < 2 {$2 = 0}; 1' < file
空白行を維持します。
答え2
この試み、
awk -v OFS=" " '{if ($2=="") print $0,0; else print $0}' file
1 2
3 4
4 5
7 0
8 0
8 0
答え3
awk
この目的に使用できます。
awk '{if (NF == 2) print $1 " " $2; else if (NF == 1) print $1 " 0";}' input_file.txt > output_file.txt
これは、ファイルを1行ずつ読み込み、2つの「フィールド」(つまり、スペースで区切られたテキスト文字列)を持つすべての行に対して両方のフィールドを印刷しますが、1つのフィールドのみを持つすべての行の場合、そのフィールドと区切り文字を持つ「0」 「を印刷します。その間の空間。
ここではテキストの調整は行われず、ファイルに1つまたは2つの数字を含む行のみが含まれていると仮定しているため、ここではチェックは行われません(含めるのは簡単ですが)。 1つまたは両方のフィールドがない行は出力で無視されます。