프론트엔드에 n개의 공백을 추가하는 방법

프론트엔드에 n개의 공백을 추가하는 방법

다음 데이터가 포함된 텍스트 파일인 ABC.txt가 있습니다.

n텍스트 파일 앞부분의 한 줄당 공백 수를 계산하고 싶습니다.

A Apple a day keeps a doctor away 
B I like to play with Ball
C I have cat at my home
D My Dog name is bob
I want to display output on my screen with 10 spaces in a frontend and then my file data

예상 출력:

  A Apple a day keeps a doctor away 
  B I like to play with Ball
  C I have cat at my home
  D My Dog name is bob

시도해 보았지만 작동하지 않습니다

주문하다:

prefix='          '
sed "s/^/$prefix/" ABC.txt

공백을 더 추가해야 할 경우 접두어를 변경할 필요가 없도록 범용 코드를 원합니다.

20개의 공백을 원하는 것처럼 -> 입력으로 20을 전달하고 텍스트는 텍스트 파일의 각 줄 앞에 20개의 공백으로 형식화됩니다.

답변1

그리고 perl:

n=12
perl -spe '$_ = " " x $n . $_' -- -n="$n" < your-file

그리고 awk:

n=12
awk -v n="$n" '
  BEGIN{indent = sprintf("%*s", n, "")}
  {print indent $0}' < your-file

그리고 :zshsed

n=12
sed "s/^/${(l[$n])}/" < your-file

왼쪽 패딩에 대한 매개변수 확장 플래그는 어디에 있습니까 l[n]? 여기서는 매개변수가 전혀 적용되지 않습니다.

bash, zsh 또는 ksh93을 사용하여 다음을 수행할 수도 있습니다.

n=12
printf -v indent "%${n}s"
sed "s/^/$indent/" < your-file

POSIX 쉘 사용:

n=12
indent=$(printf "%${n}s")
sed "s/^/$indent/" < your-file

답변2

이것~해야 한다작동합니다. sed 명령이 작동하지 않는다고 언급할 때 숫자를 지정할 수 없다는 것이 무슨 뜻인지 잘 모르겠습니다.

다음 방법 중 하나를 사용할 수 있습니다.

#!/bin/bash
numspaces="$1"
prefix=''
for ((i=0;i<$numspaces;i++)) ; do 
    prefix="$prefix "
done
sed "s/^/$prefix/" ABC.txt

"pad.sh"로 저장하고 실행 가능하게 만든 chmod a+x pad.sh후 실행하여 ./pad.sh 1919개의 공백을 채웁니다.

관련 정보