如何从 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