私が所有しているファイルにコンテンツを書き込もうとしますawk
。データセットの例は次のとおりです。
S,CV0110,1235
S,1234
D,CQ120,3245
P,7894
予想される結果は次のとおりです。 (行のフィールド数が2つの場合は空のフィールドを追加)
S,CV0110,1235
S,,1234
D,CQ120,3245
P,,7894
これで、フィールドが2つある行ではなく、すべてのデータ行に値が追加されます。
printf 'S,CV010,1235\r\n' | awk 'BEGIN{FS=OFS="fs"}{$n = $n OFS value}1'
答え1
与えられた
$ cat file
S,CV0110,1235
S,1234
D,CQ120,3245
P,7894
それから
$ awk -F, 'BEGIN{OFS=FS} NF<3{$1 = $1 OFS} 1' file
S,CV0110,1235
S,,1234
D,CQ120,3245
P,,7894
答え2
sed '/,.*,/!s/,/,,/' file
/,.*,/!
行に2つのカンマが含まれていない場合s/,/,,/
最初のカンマを 2 つのカンマで置き換えます。
これはより多くの分野に一般化することができます。たとえば、行に7番目のフィールドがない場合は、空のフィールドを追加します。
sed -E '/,(.*,){5}/!s/,/,,/' file
答え3
各列の値は常に類似していると仮定します。
行が1文字と4桁の数字で始まり、行が終わったらカンマを追加します。
sed '/^[A-Z],[0-9]\{4\}$/s/,/,,/' file
出力:
S,CV0110,1235
S,,1234
D,CQ120,3245
P,,7894