ファイルに2つの列がある場合に列を追加する方法

ファイルに2つの列がある場合に列を追加する方法

私が所有しているファイルにコンテンツを書き込もうとします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

関連情報