1. ホーム
  2. awk

[解決済み] awk におけるタブ区切りの値

2022-12-27 14:47:27

質問

TAB区切りの文字列から最初の列を選択するには?

# echo "LOAD_SETTLED    LOAD_INIT       2011-01-13 03:50:01" | awk -F'\t' '{print $1}'

上記は、予想通り "LOAD_SETTLED" だけでなく、行全体を返します。

更新してください。

タブ区切りの値の3列目を変更したいのですが、どうすればいいですか? 以下はうまくいきません。

echo $line | awk 'BEGIN { -v var="$mycol_new" FS = "[ \t]+" } ; { print $1 $2 var $4 $5 $6 $7 $8 $9 }' >> /pdump/temp.txt

しかし、これはセパレータがタブでなくカンマであれば期待通りに動作します。

echo $line | awk -v var="$mycol_new" -F'\t' '{print $1 "," $2 "," var "," $4 "," $5 "," $6 "," $7 "," $8 "," $9 "}' >> /pdump/temp.txt

どのように解決するのですか?

を設定する必要があります。 OFS 変数(出力フィールドのセパレータ)がタブになるように設定する必要があります。

echo "$line" | 
awk -v var="$mycol_new" -F'\t' 'BEGIN {OFS = FS} {$3 = var; print}'

(必ず $line を引用してください)