我有一个文本文件: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 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 个空格。