Рейтинг:0

дата grep из 2-й строки текстового файла

флаг ng

У меня есть текстовый файл с именем (document_determinationv1.txt). Этот текстовый файл содержит две строки, которые упоминаются ниже. Я хочу получить дату (20210805) из второй строки и сохранить ее в переменной с помощью команд сценария оболочки. Я новичок в Linux. Заранее спасибо.

[ДОКУМЕНТ_ОПРЕДЕЛЕНИЕ]
#ВЕРСИЯ:v1;ДАТА:20210805
флаг ng
[ДОКУМЕНТ_ОПРЕДЕЛЕНИЕ]
Рейтинг:2
флаг cn

Как всегда, есть несколько способов сделать это, в зависимости от конкретных требований.

Как один из самых простых способов, вы можете сделать:

AVARIABLE=$(sed -ne 's/.*DATE://p' document_determinationv1.txt)

Это на самом деле не волнует который строка, на которой стоит дата. Это будет работать, если ваш файл содержит ровно одну строку, содержащую ключевое слово DATE, за которым следует двоеточие и дату, которую вы хотите извлечь. Он также не будет проверять, появляется ли DATE как отдельное слово, является ли часть после DATE: датой или следует ли за ней какой-либо дополнительный мусор. Если ваш файл содержит более одной строки, содержащей ДАТУ, за которой следует двоеточие, он поместит все части после каждой ДАТЫ: в переменную, разделенную символами новой строки, что может или не может нанести ущерб вашей дальнейшей обработке. Итак, если ваш файл содержит, например:

[ДОКУМЕНТ_ОПРЕДЕЛЕНИЕ]
#ВЕРСИЯ:v1;ДАТА:20210805;ВЕС:123 кг
[РЕАЛЬНОЕ_ОПРЕДЕЛЕНИЕ]
#PRIME:13;КАНДИДАТ:БАРТ СИМПСОН

то команда с радостью положит

20210805;ВЕС:123 кг
БАРТ СИМПСОН

в переменную, включая новую строку между буквами g и B.

Но пока вы можете гарантировать, что файл имеет именно тот формат, который вы указали в своем вопросе, он будет работать нормально.

флаг hr
Конечно, вы можете легко заставить его заботиться о том, на какой строке он находится, например, изменив `s` на `2s`
флаг ng
Это сработало с этой командой, которую вы предоставили. Большое спасибо.
Рейтинг:0
флаг gb

Вы можете сделать следующее:

файл кота.txt | sed "2q;d" | awk -F: '{напечатать $3}'
  • кот выводит содержимое файла в канал
  • сед берет эту трубу и выводит вторую строку
  • который аук берет, разделяет двоеточиями и, наконец, печатает третий аргумент

Вы можете попробовать каждую команду отдельно. И если вы хотите сохранить весь материал в переменной, используйте $(команда) синтаксис:

VAR=$(cat file.txt | sed "2q;d" | awk -F: '{print $3}')

И распечатайте результат:

эхо $VAR
флаг hr
Вам не нужен `cat`, и вам не нужен sed, если вы используете `NR` awk для выбора строки ex. `awk -F'[;:]' 'NR==2 {print $4}' document_determinationv1.txt`

Ответить или комментировать

Большинство людей не понимают, что склонность к познанию нового открывает путь к обучению и улучшает межличностные связи. В исследованиях Элисон, например, хотя люди могли точно вспомнить, сколько вопросов было задано в их разговорах, они не чувствовали интуитивно связи между вопросами и симпатиями. В четырех исследованиях, в которых участники сами участвовали в разговорах или читали стенограммы чужих разговоров, люди, как правило, не осознавали, что задаваемый вопрос повлияет — или повлиял — на уровень дружбы между собеседниками.