Перемежать строки из двух файлов

Попробуйте следующее (т.е. избавьтесь от кажущихся бессмысленным при чтении в ):

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
3
01.08.2016, 14:18
3 ответа

Просто:

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"
9
27.01.2020, 21:08

Если вам не нужно сохранять порядок, вы можете сделать cat $file1 $file2 | sort

3
27.01.2020, 21:08

Другое с 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
2
27.01.2020, 21:08

Теги

Похожие вопросы