변수의 마지막 문자 앞에 공백 추가

변수의 마지막 문자 앞에 공백 추가

숫자와 문자가 포함된 변수가 있습니다.

예: 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

관련 정보