Я пытаюсь извлечь строки из файла и сохранить вывод в новый файл.

Я использовал код:

cat datafile | awk -f pullhh.txt > fuel

где файл pullhh.txt содержит код /FUELHH/

Я хочу извлечь строки, содержащие слово FUELHH и сохранить их в файл, а затем также извлечь строки, содержащие FUELINST и сохранить их в отдельный файл.

Есть ли способ сделать это, используя обе команды в файле pullhh.txt ?

3 ответа3

4

Изменить: распечатать в отдельные файлы:

/FUELHH/   {print > "fuelhh.txt"}
/FUELINST/ {print > "fuelinst.txt"}

Поскольку pullhh.txt на самом деле является сценарием awk, расширение txt вводит в заблуждение. Используйте что-то вроде extract_lines.awk а затем:

awk -f extract_lines.awk datafile
1

так как вы хотите перенаправить вывод в 2 разных файла, я предлагаю следующее (выполнить через опцию -f awk).

BEGIN {
    while (getline line < "datafile" > 0) {
        if (match(line, "FUELHH"))   print line > "file1"
        if (match(line, "FUELINST")) print line > "file2"
    }
}

более короткое решение:

{
    if (match($0, "FUELHH"))   print > "file1"
    if (match($0, "FUELINST")) print > "file2"
}
0

Все, что вам нужно, это один вкладыш, файл сценария не требуется:

awk '/FUELHH/{print > "fuelhh.txt"}/FUELINST/{print}' datafile > fuelinst.txt

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .