用于URL解析的Grep-bash脚本编程

用于URL解析的Grep-bash脚本编程,bash,shell,scripting,grep,Bash,Shell,Scripting,Grep,我正在尝试学习一些bash脚本,但我不知道如何使用grep来拆分URL链接,例如: blabla1.com blabla2.gov blabla3.fr 我只想让com、gov和fr(不带“.”字符)忽略“.”之前的内容 提前感谢。Grep是一个匹配文本的工具。如果要转换文本,则需要其他内容。如果您在bash变量中有问题的值,那么您要问的很简单: authority=blabla.com # Here's the important bit: domai

我正在尝试学习一些bash脚本,但我不知道如何使用
grep
来拆分URL链接,例如:

blabla1.com         
blabla2.gov         
blabla3.fr 
我只想让com、gov和fr(不带“.”字符)忽略“.”之前的内容

提前感谢。

Grep是一个匹配文本的工具。如果要转换文本,则需要其他内容。如果您在bash变量中有问题的值,那么您要问的很简单:

authority=blabla.com

# Here's the important bit:
domain=${authority/*./}

echo $domain

中间的滑稽语法对变量<代码> TIMP < /代码>的值进行了模式替换的结果。

如果您试图在文件行中执行此操作,则
sed
程序就是您的朋友:

sed 's/.*\.//' < input.file
sed's/*\./'
这也是一种模式替换,但是sed使用正则表达式模式,而bash使用shell glob模式。

请尝试以下方法:

grep -o -E '[a-z]{2,3}\b' input > output
-o,--only matching
:仅打印匹配行中匹配的(非空)部分,每个部分位于单独的输出行上

$ cat input
blabla1.com
blabla2.gov
blabla3.fr

$ cat output
com
gov
fr
grep-E-o'[^.]+$”
-o指示grep仅打印行的匹配部分

$ cut -d. -f2 file
com
gov
fr
-E打开+量词所需的扩展regexp

[^.]+$表示行尾不是点的任何字符

$ cut -d. -f2 file
com
gov
fr

如果这还不是您所需要的,请发布一些更具代表性的输入和预期输出,以便我们可以帮助您找到正确的解决方案。

这不是grep的目的
grep
是“全局查找正则表达式并打印结果”的缩写。您所描述的是一些其他工具的工作,如
sed
awk
。如果您的URL包含在文件中的其他文本中,请发布该全文的一些示例。另外,请准确地发布您发布的示例输入所提供的预期输出。@Ed Morton您是对的<代码>grep
不是我最终想要的,因为它只打印。。我认为
awk
更合适(我正在研究它)!很抱歉回答得太晚,这取决于你真正想做什么。如果您在单个行上进行简单的替换,那么sed是正确的工具。如果不止这些,那么你会使用awk。我们无法从您目前发布的内容中判断。@User1911从某些特定示例输入中生成所需输出的工具只是解决方案的起点。如果您只需要文件中
后面的部分,则上述内容不必要地复杂,其他工具可以更简单、更方便地完成。谢谢!帮了我很多忙:-)