как извлекать части файла в отдельные файлы в linux с помощью команд awk или grep или sed

У меня есть текстовый файл, как показано ниже:

Вход file1.txt

  • Найти число FN с awk
  • Как эффективно искать список строк в большой директории кода
  • Использование awk для печати столбцов, содержащих несколько шаблонов
  • Что означает vRS = "\ n20" в командной строке gawk?
  • Почему вывод «столбца» смещен с помощью цветного ввода ANSI?
  • Команда Awk против Grep
  • ....................... cha21 1 3 5 nar cha21 2 3 6 piy cha23 2 3 5 ram cha23 3 3 3 dam cha27 5 3 7 pam ................................ 

    И я хотел бы выделить все 5 столбцов, соответствующих строкам «cha21», «cha23» и «cha27», в 3 разных выходных файла (например, cha21.txt, cha23.txt, cha27.txt).

    выходные файлы

    cha21.txt

     .......... cha21 1 3 5 nar cha21 2 3 6 piy ...................... 

    cha23.txt

     cha23 2 3 5 ram cha23 3 3 3 dam ................................... 

    cha27.txt

     cha27 5 3 7 pam ........................... 

    Я могу сделать это, используя команду grep 3 раза для 3-х файлов … В любом случае я могу сделать это все сразу, т.е. одну команду, потому что мне нужно извлечь 100 выходных файлов.

  • Создание текстового файла из других текстовых файлов
  • Использовать awk для печати и редактирования даты
  • Алфавитный список Grep, если он не находится в трубопроводе
  • Чтение номеров из файла управления и извлечение совпадающих номеров строк из файла данных
  • UNIX - команда разбивать файл на несколько файлов со всеми строками для каждых 3 уникальных значений в столбце
  • распечатать файл в шестнадцатеричном формате с помощью awk
  • 2 Solutions collect form web for “как извлекать части файла в отдельные файлы в linux с помощью команд awk или grep или sed”

    я бы попробовал

     awk '{print >> $1 ".txt" ;}' 

    где

    • print всю строку.
    • >> $1 ."txt" напишите (добавьте) эту строку в файл, обозначенный $ 1, с добавленным .txt .

    редактировать:

    если у вас есть строки комментариев, строки с точками и т. д.

    пытаться

     awk '$1 ~ /cha/ {print >> $1 ".txt" ;}' 

    который будет заполнять только файл, начинающийся с cha.

    Это легко с awk :

     awk '{print $0 >> $1".txt"}' file1.txt 
    Linux и Unix - лучшая ОС в мире.