다음 데이터가 포함된 텍스트 파일인 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
그리고 :zsh
sed
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 19
19개의 공백을 채웁니다.