使用单个命令从输入行中查找通用模式

时间:2019-02-14 14:56:56

标签: shell unix

我有以下两行。我只希望使用单个命令的行中有.script&之后的部分。

输入行

hello/world/command_altr.program_for_input.script   
hello/world/script/deleted_the_input.program_for_output.script
/com/bash/hastag/welcome/program -u util/basic/level/learning

预期输出:

command_altr.program_for_input.script 

deleted_the_input.program_for_output.script

1 个答案:

答案 0 :(得分:0)

如果我正确理解了您的问题,可以使用sed来解决。

sed -n -r -e 's/^.*\/([^/]+\.script).*$/\1/p'

它将提取给定的图案并进行打印。没有样式的行将被丢弃。

^.*\/搜索从行首开始的字符串,该字符串包含任何字符并以/

结尾

([^/]+\.script)搜索一个或多个字符的重复字符(/除外),后跟一个点和字符串“ script”。如果找到,则通过(....)

将其置于记住的模式

.*$搜索直到end_of_line的任意数量的字符

/\1/用记住的模式替换行。

如果找到了图案,则打印'p'。