Grep for URL 解析 - bash 脚本编程

Grep for URL parsing - bash script programming

我正在尝试学习一些 bash 脚本,但我不明白如何使用 grep 来拆分 URL link 例如:

blabla1.com         
blabla2.gov         
blabla3.fr 

我只想让 com 、 gov 和 fr (没有 '.' 字符)忽略 '.' 之前的内容

提前致谢..

Grep 是匹配 文本的工具。如果您想 转换 文本,您还需要其他东西。如果您在 bash 变量中有相关值,那么您的问题很简单:

authority=blabla.com

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

echo $domain

中间有趣的语法计算出对变量 temp 的值进行模式替换的结果。

如果您尝试在文件的行上执行此操作,那么 sed 程序是您的朋友:

sed 's/.*\.//' < input.file

这又是一个模式替换,但是 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 '[^.]+$' < input

-o 指示 grep 仅打印行的匹配部分

-E 打开 + 量词

所需的扩展正则表达式

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

$ cut -d. -f2 file
com
gov
fr

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