所有権履歴をコピーして詳細に貼り付けます。

所有権履歴をコピーして詳細に貼り付けます。

最後にcountを追加した後、文字列データ型の位置が変わることが観察されました。

       awk '$2=="H" {x = substr($3,1,4); next} {$(NF+1) = x} 1'

入力する:

12      H   0003A 
12305245D   2500 AB   5454 87870001A 
12305245D   2500 ABC  5454 87870002A 
12305245D   2500 ABCD 5454 87870003A

予想出力:

12      H   0003A 
12305245D   2500 AB   5454 87870001A 0003 
12305245D   2500 ABC  5454 87870002A 0003
12305245D   2500 ABCD 5454 87870003A 0003

実際の出力:

12      H   0003A 
12305245D   2500 AB 5454 87870001A 0003
12305245D   2500 ABC 5454 87870002A 0003
12305245D   2500 ABCD 5454 87870003A 0003

ベストアンサー1

セットフィールド区切り文字を空の文字列として使用して、-F ''各文字を別々のフィールドとして扱うようにawkに指示します。$同じいいえ同じですH$3指定された部分文字列を持つことはできません)。代わりに、デフォルト(スペース)区切り文字を使用してください。

print $0, xまた、部分文字列を文字列($0 = $0 x)として追加するのではなく、別々の区切りフィールドとして追加したいようです。

$ awk '$2=="H" {x = substr($3,1,4)} $2!="H" {print $0, x}' input
12305245D   2500 AB   5454 87870001A  0003
12305245D   2500 ABC  5454 87870002A  0003
12305245D   2500 ABCD 5454 87870003A 0003

簡略化されたバージョン:

$ awk '$2=="H" {x = substr($3,1,4); next} {print $0, x}' input
12305245D   2500 AB   5454 87870001A  0003
12305245D   2500 ABC  5454 87870002A  0003
12305245D   2500 ABCD 5454 87870003A 0003

ノートこの回答厳密に予約済み入力フィールドの位置:最後の列の可変間隔は、可変数の末尾のスペースの結果です。投稿した入力から

おすすめ記事