txtファイルの各要素から1を引く方法。私は実際に次のようなことを試しました。これ問題が発生しましたが、成功しませんでした。
次の形式のファイルがあるとしましょう。
2,4,5
1,2,3
14,12,1
今私が欲しいファイルは
// basically subtract 1 from all
1,3,4
0,1,2
13,11,0
今まで試したことは
$awk '{if(getline != 0){
for(i = 0; i <=NF; i++){
$(i)=$(i)-1;
}
} print;}}'
各要素からファイルの終わりまで、下位 1 まで読み込もうとしますが、これにより -1 だけが得られます。
答え1
ロジックは正確ですが、いくつかの間違いをしました。
awk -vOFS=, -F, '{
for(i = 1; i <=NF; i++ ){
$i -= 1;
}
print;
}' file.txt
getline
(使用するように)次の行を読みます$0
。ここでは意味がありません。awkにコンマで分割(または使用)するように指示する必要があります。
FS
デフォルトでは空白に分割されます。-F
$0
行全体なので、ループを開始しようとしています。i = 1
出力にカンマを印刷するには
OFS=,
(出力フィールド区切り記号)を設定する必要があります。
あるいは、Perlを使用することもできます。
perl -ple 's{(\d+)}{$1 - 1}eg;' file.txt