0

Length.txt行ごとに複数の名前 (40) を持つ 1 つのファイルがあります。ファイルの各行の文字数をカウントする小さなシェル スクリプトを作成し、カウントが 9 未満の場合は、それらの行を 8 つのスペースと各行の末尾に 1 つ追加して置き換えます。

たとえば、名前が

XXXXXX

として置き換えます

XXXXXX        1

以下のコーディングで試しました。私にとっては機能していますが、行を置き換えるたびに、一度にすべての行が表示されます。したがってLength.txt、その 4 行の内外に 40 行あり、文字数が 9 文字未満の場合、出力には 160 行あるとします。変更された4行で40行の出力のみを表示するのを手伝ってくれる人はいますか?

#!/usr/bin/sh
#set -x

while read line;
do
count=`echo $line|wc -m`
        if [ $count -lt 9 ]
        then
        Number=`sed -n "/$line/=" Length.txt`;
        sed -e ""$Number"s/$line/$line       1/" Length4.txt
        fi
done < Length.txt
4

4 に答える 4

1
$ cat foo.input
I am longer than 9 characters
I am also longer than 9 characters
I am not
Another long line
short

$ while read line; do printf "$line"; (( ${#line} < 9 )) && printf "        1"; echo; done < foo.input
I am longer than 9 characters
I am also longer than 9 characters
I am not        1
Another long line
short        1
于 2013-09-05T12:26:16.240 に答える
0
$ awk -v FS= 'NF<9{$0=sprintf("%s%*s1",$0,8,"")} 1' file
XXXXXX        1

9 文字以外の数字をチェックし、8 以外の一連の空白を出力するのがいかに簡単であるかに注目してください。

于 2013-09-05T17:37:13.707 に答える