Linux
如何從數據文件中減去一個常數值?
我想從我的數據中減去一個常數來獲得新的數據文件。例如,我想從我的數據中減去 10。
數據.txt
Id a b c d e 1 1 2 3 4 5 2 2 3 4 5 6 3 3 4 5 6 7 4 4 5 6 7 8 5 5 6 7 8 9 6 6 7 8 9 10 7 7 8 9 10 11 8 8 9 10 11 12 9 9 10 11 12 13 10 10 11 12 13 14 11 11 12 13 14 15 12 12 13 14 15 16 13 13 14 15 16 17 14 14 15 16 17 18
所需輸出:
出.txt
Id a b c d e 1 -9 -8 -7 -6 -5 2 -8 -7 -6 -5 -4 3 -7 -6 -5 -4 -3 4 -6 -5 -4 -3 -2 5 -5 -4 -3 -2 -1 6 -4 -3 -2 -1 0 7 -3 -2 -1 0 1 8 -2 -1 0 1 2 9 -1 0 1 2 3 10 0 1 2 3 4 11 1 2 3 4 5 12 2 3 4 5 6 13 3 4 5 6 7 14 4 5 6 7 8
這是微不足道的
awk
:$ awk '{if(NR>1){for(i=2;i<=NF;i++){$(i)=$(i)-10;}}print;}' data.txt Id a b c d e 1 -9 -8 -7 -6 -5 2 -8 -7 -6 -5 -4 3 -7 -6 -5 -4 -3 4 -6 -5 -4 -3 -2 5 -5 -4 -3 -2 -1 6 -4 -3 -2 -1 0 7 -3 -2 -1 0 1 8 -2 -1 0 1 2 9 -1 0 1 2 3 10 0 1 2 3 4 11 1 2 3 4 5 12 2 3 4 5 6 13 3 4 5 6 7 14 4 5 6 7 8
為了保持列對齊,您可以通過管道
column
:$ awk '{if(NR>1){for(i=2;i<=NF;i++){$(i)=$(i)-10;}}print;}' data.txt | column -t Id a b c d e 1 -9 -8 -7 -6 -5 2 -8 -7 -6 -5 -4 3 -7 -6 -5 -4 -3 4 -6 -5 -4 -3 -2 5 -5 -4 -3 -2 -1 6 -4 -3 -2 -1 0 7 -3 -2 -1 0 1 8 -2 -1 0 1 2 9 -1 0 1 2 3 10 0 1 2 3 4 11 1 2 3 4 5 12 2 3 4 5 6 13 3 4 5 6 7 14 4 5 6 7 8