양식의 파일이 있습니다
...
num 0.12 num num
num 25.53 num num
num 7.82 num num
...
각 행의 두 번째 필드를 변환하여 숫자 >= 0 및 < 10에 "0"을 추가하려고 하므로 출력은 다음 형식이 됩니다.
...
num 00.12 num num
num 25.53 num nnum
num 07.82 num num
...
나는 전에 시도했다
sed 's/ 7./07./2'
그러나 공백을 구분하지 않으므로 "7"이 나타나면 대체됩니다.
답변1
그리고 awk
:
$ awk '$2 = sprintf("%05.2f",$2)' file
num 00.12 num num
num 25.53 num num
num 07.82 num num
답변2
당신이 추구하는 것은 다음과 같을 수 있습니다 :
sed 's/ \([0-9]\.\)/0\1/'
공백, 0~9 범위의 숫자, 점이 뒤따르고 공백을 0으로 바꿉니다. 괄호는 표현식의 대체 부분에서 \([0-9]\.\)
참조되는 그룹을 표시합니다.\1
답변3
그것이 사용된다면 어떨까요 awk
?
$ awk '$2>0 && $2<10 {$2="0"$2}1' file
num 00.12 num num
num 25.53 num num
num 07.82 num num
답변4
순수 쉘:
while read a b rest; do
b=$(printf "%05.2f" $b);
echo "$a $b $rest";
done < file.txt