숫자와 문자가 포함된 변수가 있습니다.
예: 242M
에코될 때 242M처럼 보이도록 이 변수의 마지막 문자 앞에 공백을 추가해야 합니다.
sed를 사용해 보았지만 내가 찾은 바에 따르면 파일에서 읽는 데만 사용할 수 있고 변수를 수정하는 데는 사용할 수 없는 것 같습니다.
감사해요!
답변1
이 버전은 다음뿐만 아니라 모든 POSIX 셸에서 작동합니다 bash
.
printf '%s\n' "${a%?} ${a#"${a%?}"}"
내부의 추가 따옴표는 ${a#...}
특수 문자가 변수에 표시되는 것을 방지하기 위한 것입니다.
$ a='10*M'; printf '%s\n' "${a%?} ${a#"${a%?}"}"
10* M
이것이 없으면 두 번째 변수 확장은 가 되고 ${a#10*}
에코 10* *M
됩니다.
답변2
다른 답변이 작동하지 않으면(예: macOS에서) 시도해 볼 수도 있습니다.
a="${a%?} ${a: -1}"
모두 함께 결합a에는 마지막 문자가 없습니다, 공백 및a의 마지막 문자.
답변3
순전히 쉘 내에서:
var=${var:0:-1}' '${var: -1:1}
예를 들어:
$ var=jeff
$ var=${var:0:-1}' '${var: -1:1}
$ printf '%s\n' "$var"
jef f
답변4
다음은 변수를 사용하는 Sed의 예입니다.
q=242M
sed 's/.$/ &/' <<eof
$q
eof