grep date from 2nd line of a text file

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

[DOCUMENT_DETERMINATION]
#REVISION:v1;DATE:20210805
0
задан 12 August 2021 в 23:37

2 ответа

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

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

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

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

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

echo $VAR
0
ответ дан 20 August 2021 в 10:27

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

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

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

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

[DOCUMENT_DETERMINATION]
#REVISION:v1;DATE:20210805;WEIGHT:123kg
[REAL_DETERMINATION]
#PRIME:13;CANDIDATE:BART SIMPSON

, тогда команда с радостью поместит

20210805;WEIGHT:123kg
BART SIMPSON

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

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

2
ответ дан 20 August 2021 в 10:27

Другие вопросы по тегам:

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