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 一些更具代表性的输入和预期输出,以便我们可以帮助您找到正确的解决方案。
我正在尝试学习一些 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 一些更具代表性的输入和预期输出,以便我们可以帮助您找到正确的解决方案。