次のデータを含むテキストファイル、ABC.txtがあります。
n
テキストファイルの前半の1行あたりのスペース数を計算したいと思います。
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
19./pad.sh 19
個のスペースを埋めます。