통계 분석에 사용할 수 있는 매트릭스에 데이터를 저장합니다. 분석을 위해서는 모든 숫자가 절대값에 포함되어야 합니다. 그렇지 않으면 알고리즘이 실패합니다. 데이터 샘플은 다음과 같습니다.
NUMBER SQUARE SQUARE ROOT
-1 1 -1.000
2 -4 -1.414
-3 -9 1.732
-4 -16 2.000
5 25 -2.236
6 -36 -2.449
-7 49 2.646
-8 64 2.828
9 -81 3.000
10 -100 -3.162
-11 121 3.317
-12 -144 -3.464
13 169 3.606
-14 -196 -3.742
이 표의 숫자를 절대값으로 변환하려면 어떻게 해야 합니까?
답변1
sed
다음과 같이 사용할 수 있습니다 .
sed 's/-//g' file | column -t
awk
다음과 같이 사용할 수 있습니다 .
awk '{for (i=1; i<=NF; i++) if ($i < 0) $i = -$i; print }' file | column -t
NUMBER SQUARE SQUARE ROOT
1 1 1.000
2 4 1.414
3 9 1.732
4 16 2.000
5 25 2.236
6 36 2.449
7 49 2.646
8 64 2.828
9 81 3.000
10 100 3.162
11 121 3.317
12 144 3.464
13 169 3.606
14 196 3.742
답변2
필요한 것이 모든 값을 양수로 만드는 것이라면 모든 대시를 제거하십시오.
$ <infile sed 's/-//g'
NUMBER SQUARE SQUARE ROOT
1 1 1.000
2 4 1.414
3 9 1.732
4 16 2.000
5 25 2.236
6 36 2.449
7 49 2.646
8 64 2.828
9 81 3.000
10 100 3.162
11 121 3.317
12 144 3.464
13 169 3.606
14 196 3.742
좋은 열에 값이 필요한 경우 다음을 추가하세요 column -t
(단, 세 번째 항목이 단어가 되도록 헤더 행도 변경하세요 SQUARE_ROOT
).
<infile sed 's/-//g' | column -t
NUMBER SQUARE SQUARE_ROOT
1 1 1.000
2 4 1.414
3 9 1.732
4 16 2.000
5 25 2.236
6 36 2.449
7 49 2.646
8 64 2.828
9 81 3.000
10 100 3.162
11 121 3.317
12 144 3.464
13 169 3.606
14 196 3.742
이 모든 작업은 awk를 호출하여 수행할 수 있습니다.
$ awk 'NR==1;NR!=1{gsub(/-/,"");printf("%5g %8g %11.3f\n",$1,$2,$3)}' infile
NUMBER SQUARE SQUARE_ROOT
1 1 1.000
2 4 1.414
3 9 1.732
4 16 2.000
5 25 2.236
6 36 2.449
7 49 2.646
8 64 2.828
9 81 3.000
10 100 3.162
11 121 3.317
12 144 3.464
13 169 3.606
14 196 3.742