首页 > 解决方案 > 在同一行的特定单词之后提取一个单词,但它们之间没有空格

问题描述

如何提取 bash 中特定单词之后的单词?更准确地说,我有一个文件,其中有一行如下所示:

IN=../files/d.txt

我想从上面的行中读取“d”。

awk '{for(i=1;i<=NF;i++) if ($i=="files/") print $(i+1)}' inputFile

这段代码对我没有帮助,因为它试图在空格后到达单词。但这里我们在“files/”(续字)之后有“d”,并以“.”结尾。

标签: bashshellunix

解决方案


您可以使用sed

sed -n '/\/files\// s~.*/files/\([^.]*\)\..*~\1~p' file

d

你也可以使用awk命令:

awk -F/ '$(NF-1) == "files"{sub(/\..*/, "", $NF); print $NF}' file

推荐阅读