다음 결과를 인쇄하는 bash 스크립트가 있습니다.
120,900
1160,001
80,730
600,165
6,310
1111,203
나는 다음과 같은 결과를 남기고 싶습니다.
120,900
1160,001
80,730
600,165
6,310
1111,203
두 번째 열의 쉼표 뒤에 3개의 숫자만 유지하기 위해 이 행을 사용했습니다.
awk '{ printf "\t" $1 "\t|\t" "%.3f\n", $2 }' MyFile.txt;
어떻게 해야 하나요?
답변1
printf
대신 사용하십시오 echo
:
$ cat 442817.sh
#!/bin/bash
numbers=(120,900 1160,001 80,730 600,165 6,310 1111,203)
for n in "${numbers[@]}"; do
printf "%10s\n" "$n"
done
$ ./442817.sh
120,900
1160,001
80,730
600,165
6,310
1111,203
답변2
Awk
해결책:
awk 'FNR == NR{ len = length; if (len > max_len) max_len = len; next }
{ printf "%" max_len "s\n", $0 }' file.txt file.txt
산출:
120,900
1160,001
80,730
600,165
6,310
1111,203
또는 GNU를 통해coreutils
:
printf "%$(sort -nr file.txt | wc -L)s\n" $(cat file.txt)
답변3
$ column -t -s, file | sed 's/^\([0-9]*\)\( *\)/\2\1,/'
120,900
1160,001
80,730
600,165
6,310
1111,203
출력은 column
다음과 같습니다
120 900
1160 001
80 730
600 165
6 310
1111 203
이 sed
명령은 단순히 두 열 사이의 공백을 행의 시작 부분으로 이동하고 해당 위치에 쉼표를 삽입합니다.
처음 두 개의 추가 공백이 필요하지 않은 경우 다음을 사용하십시오.
$ column -t -s, file | sed -e 's/^\([0-9]*\)\( *\)/\2\1,/' -e 's/^ //'
120,900
1160,001
80,730
600,165
6,310
1111,203