Выборочное копирование из одного файла в другой с помощью bash-скрипта

#bash

#bash

Вопрос:

Я пытаюсь написать скрипт bash, который скопирует файл, извлекая определенные числа из файла и делая их заголовком. Исходный файл выглядит следующим образом:

     #
    # Rotational transition: j= **3**--> **8**
    #
    # Threshold energy **0.72598151E-01** eV 
    #
    0.01000019 0.000000
    0.03000057 0.000000
    ...
  

Я выделил жирным шрифтом функции, которые я хочу скопировать в качестве заголовка, чтобы выходной файл выглядел так:

     3 8 0.72598151E-01
    #
    # Rotational transition: j= **3**--> **8**
    #
    # Threshold energy **0.72598151E-01** eV 
    #
    0.01000019 0.000000
    0.03000057 0.000000
    ...
  

Я хочу, чтобы этот скрипт скопировал кучу файлов, которые будут иметь тот же макет, что и выше, но с номерами, входящими в заголовок, разными для каждого файла. Мой скрипт для копирования файла далеко:

     echo > newFile
    while read -r line
        do 
        echo $line >> newFile
        done < originalFile
    done
  

Большое спасибо за вашу помощь

Джеймс

Ответ №1:

Непроверенный, но вы поняли идею:

 FIRST=$(head -n2 "$1" | grep 'Rotational transition' | sed 's/.*j=//; s/s//g; s/-->/ /')
SECOND=$(head -n4 "$1" | grep 'Threshold energy' | sed 's/.*energy //; s/ eV//')
echo "$FIRST $SECOND" > "$2"
cat "$1" >> "$2"
  

Комментарии:

1. Большое вам спасибо за вашу помощь, это кажется очень близким к решению. Я вижу, как строки внутри $((…)) извлекают правильную информацию из файла. Однако, когда я пытаюсь запустить этот код, я получаю сообщение об ошибке: «синтаксическая ошибка: недопустимый арифметический оператор (токен ошибки равен …) «, и в нем говорится, что токен ошибки — это то, что находится внутри $ ((…)) .

2. Глупый я, я, конечно $(...) $((...)) , не отредактировал ответ, теперь работает в моем тесте.

3. Большое спасибо за вашу помощь