양수 및 음수 값을 절대 값 테이블로 변환

양수 및 음수 값을 절대 값 테이블로 변환

통계 분석에 사용할 수 있는 매트릭스에 데이터를 저장합니다. 분석을 위해서는 모든 숫자가 절대값에 포함되어야 합니다. 그렇지 않으면 알고리즘이 실패합니다. 데이터 샘플은 다음과 같습니다.

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

관련 정보