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
원래:
답변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