Попробуйте следующее (т.е. избавьтесь от кажущихся бессмысленным при чтении в
):
cat /vjay/project/v_jay |
while IFS=, read aa bb cc dd ee ff gg ; do
/script/vjayscript.ksh "$aa" "$bb" "$cc" "$dd" "$ee" "$ff" "$gg"
done
Просто:
paste -d '\n' -- - - "$file2" < "$file1"
(при условии, что $file2
не -
).
Или с помощью GNU sed
, при условии, что $file2
(содержимое переменной, имя файла) не содержит символов новой строки и не начинается с пробела или символа табуляции:
sed "2~2R$file2" "$file1" < "$file2"
С awk
(при условии, что $file1
не содержит символов =
(или, по крайней мере, что если содержит, то часть перед ним не является приемлемым именем переменной awk)):
export file2
awk '{print}
NR % 2 == 0 {if ((getline l < ENVIRON["file2"]) > 0) print l}
' "$file1"
Если вам не нужно сохранять порядок, вы можете сделать cat $file1 $file2 | sort
Другое с awk
awk '
FNR==NR{
A[$1]=$0
next
}
1
!(NR%2){
print A[$1]
}
' file2 file1
Или, если оба файла правильно отсортированы (как мы используем can paste
), проще:
awk '
1
!(NR%2){
getline <"file1"
print
}
' file1