인쇄물의 각 줄을 반복합니다.

인쇄물의 각 줄을 반복합니다.

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"

기본적으로 각 줄에 나오는 모든 단어를 인쇄해야 합니다.

세부정보 추가:

Var1& var2파일에 포함된 발생 라인을 검색하여 변수에 넣습니다.

문자 그대로 다음 줄은 다음과 같습니다.

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

편집 내용으로 돌아가려면 다음을 사용하세요.프로세스 교체에스

# 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')

답변2

이것이 당신이 원하는 것입니까?

#!/usr/bin/env bash
IFS=$'\n'; var1=( $( ... your command here ... ) );
IFS=$'\n'; var2=( $( ... your command here ... ) );

for i in ${!var1[@]}; do
  echo ${arr1[$i]};${arr2[$i]};uvuveve
done

이는 동일한 수의 행을 가정 var1하고 갖습니다.var2

원래:

  1. 귀하의 명령을 배열 변수로 변환합니다.원천
  2. 그런 다음 배열을 반복합니다(원천) 변수와 추가 문자열을 함께 추가합니다.

답변3

다음 명령을 사용해보십시오

$ j="praveen"
$ k="ajay"
$ m="abhi"

$ awk -v j="$j" -v k="$k" -v m="$m" '{print j"\n"k"\n"m;exit}'
praveen
ajay
abhi

관련 정보