印刷物の各行を繰り返します。

印刷物の各行を繰り返します。

uvuveve次のように、各行の終わりにwhileステートメントの各出力を印刷したいと思います。

var1;var2;uvuveve
var1;var2;uvuveve
var1;var2;uvuveve
var1;var2;uvuveve
var1;var2;uvuveve

これは私のコードです。

var1="somedata..."
var2="anotherdata..."
while read -u3 w1; read -u4 w2; do
echo "$w1;$w2" >> $file
done 3<<< "$var1" 4<<<"$var2"

var1、var2はファイルから複数の項目を印刷するため、これらの変数の出力はたくさんあります。私はuvuveve次の単語を追加しようとしています。

var1="somedata..."
var2="anotherdata..."
string="uvuveve"
while read -u3 w1; read -u4 w2; read -u5 w3; do
echo "$w1;$w2;$w3" >> $file
done 3<<< "$var1" 4<<<"$var2" 5<<<"$string"

デフォルトでは、各行に表示されるすべての単語を印刷する必要があります。

詳細を追加:

Var1var2ファイルに含まれる発生行を検索して変数に入れます。

文字通り、次の行は次のようになります。

var1=$(grep -A12 -B12 "$tofind" $findlogs | grep Date | cut -c 51-65 | sed -e 's! !/!g')
var2=$(grep -A12 -B12 "$tofind" $findlogs | grep Date | cut -c 67-71 | sed -e 's/://g')

ベストアンサー1

変数にはプレーンテキストしかないため、読み込み中にループにリダイレクトするのは複雑すぎるようです。

何が間違っていますか?

var1="somedata..."
var2="anotherdata..."
string="uvuveve"

echo "$var1;$var2;$string"
# or
printf '%s;%s;%s\n' "$var1" "$var2" "$string"

ファイルがある場合はループが必要です。私たちが持っているなら

$ cat file1
a
b
c
$ cat file2
1
2
3

それから

string="uvuveve"
while IFS= read -r -u3 a; read -r -u4 b; do 
    printf '%s;%s;%s\n' "$a" "$b" "$string"
done 3<file1 4<file2
a;1;uvuveve
b;2;uvuveve
c;3;uvuveve

編集内容に戻るには、次を使用します。プロセスの交換S

# don't repeat yourself
dates=$(grep -A12 -B12 "$tofind" $findlogs | grep Date)
string="uvuveve"
while IFS= read -r -u3 a; read -r -u4 b; do 
    printf '%s;%s;%s\n' "$a" "$b" "$string"
done 3< <(echo "$dates" | cut -c 51-65 | sed -e 's! !/!g') \
     4< <(echo "$dates" | cut -c 67-71 | sed -e 's/://g')

おすすめ記事