繁体   English   中英

我想使用 linux 命令从文件中提取特定单词

[英]I wanted to extract a specific word from a file using linux commands

我想使用 linux 命令从文件中提取特定单词。 以下是我的文件内容

DVC Version Tag: Engine-4.0.1

我想从文件的上述内容中提取“Engine-4.0.1”到一个变量中。 我试过了

sed -n '/Engine/p' dvc_version_text.txt

这将打印整行。 我预期的 output 仅打印Engine-4.0.1

您可以使用下面给出的命令。 grep "Engine-4.0.1" 文件名 | awk -F":" '{打印 $2}'

awk下面应该可以工作:

awk -F ': ' '/^DVC Version Tag/{print $2}' file.txt

Output:

Engine-4.0.1

我将您的文本放入我自己的 test.txt 文件中,并且能够从中获得您所需要的内容

sed 's/[^:]*: *//' test.txt -> Engine-4.0.1

如果您的文件包含许多引擎(不同版本)并且您希望将它们全部提取,您可以尝试:

 <filename grep -i Engine | awk -F":" '{print$2}'

bash

X=$( echo DVC Version Tag: Engine-4.0.1 | cut -d ' ' -f4 )
X=$( echo DVC Version Tag: Engine-4.0.1 | cut -d ':' -f2 )

由于根据您的定义,文件的内容仅包含这一行,因此您可以简单地执行

awk '{ print $NF }' <dvc_version_text.txt

或者

cut -d ' ' -f 4 <dvc_version_text.txt

或者

grep -oE 'Engine.+'  <dvc_version_text.txt

假设:

  • 您想在文件中找到以Engine开头的单词。
  • 该行中的单词后面没有多余的字符串。
  • 可能还有其他行不包含Engine

那你试试:

sed -En 's/.*(Engine.*)/\1/p' dvc_version_text.txt

如果所需的字符串总是出现在最后一个空格之后,则此sed将起作用

$ sed 's/.*\s//' input_file
Engine-4.0.1

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM