如何在前端添加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 shell:

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 个空格。

相关内容