从文本文件的第二行 grep 日期

从文本文件的第二行 grep 日期

我有一个名为 (document_determinationv1.txt) 的文本文件。此文本文件包含下面提到的两行。我想从第二行获取日期 (20210805),并想使用 shell 脚本命令将其存储在变量中。我是 Linux 新手。提前致谢。

[DOCUMENT_DETERMINATION]
#REVISION:v1;DATE:20210805

答案1

与往常一样,根据具体要求,有多种方法可以实现这一点。

作为最简单的方法之一,您可以这样做:

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

您可以执行以下操作:

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

相关内容