Linux Bash 脚本

标签 linux bash sed awk grep

我想在 Linux 中使用以下命令编写一个 bash 脚本 AWK SED grep curl 查找特定的单词然后对其进行计数。

这是我的脚本:

#!/bin/sh

echo "URL:"
read url
urlsou=$(curl -s "$url")
result=$(awk '/test/ {f=1} /link/ {g=1} /WOW/ {h=1} !f && !g && h; /testend/ {f=0} /linkend/ {g=0} /wow/ {h=0}' | grep -o "WOW" | grep -c "WOW")
echo "Total :" "$result"

当我使用我的脚本时,我得到 0,但当我仅使用 AWK 命令时,如下 AWK 以及具有 HTML 源的文件 awk '/test/{f=1}/link/{g=1}/WOW/{h=1} !f && !g && h;/testend/{f=0}/linkend/{g=0}/wow/{h=0}' 示例 | grep -o“哇”| grep -c "WOW" 我得到了正确的答案。

这是我的示例文件(但我的真实文件非常复杂):

WOW1wow
linklinkend
wow1WOWwow123WOW
testtestend
WOWWwow
link WOW test testend linkend wow
WOW2wow
link WOW 123 wow linkend
  1. 尝试使用 awk '/test/{f=1}/link/{g=1}/WOW/{h=1} !f && !g && h;/testend/{f=0}/linkend/{g=0}/wow/{h=0}' 示例 | grep -o“哇”| grep -c "WOW"example 结果是5
  2. 尝试使用 awk '/test/{f=1}/link/{g=1}/WOW/{h=1} !f && !g && h;/testend/{f=0}/linkend/{g=0}/wow/{h=0}' 示例 | grep -o "WOW"example 结果是 4
  3. 尝试使用脚本结果为0

正确答案是5

我认为问题在于如何在脚本中将 urlsou 变量传递给 AWK 或者如何为 urlsource 创建临时文件。

我的问题是什么,如何在没有任何编程语言或额外命令的情况下解决它?

最佳答案

尝试这样做:

#!/bin/bash

echo "URL:"
read url
urlsou=$(curl -s "$url")
# \b is "word boundaries"
result=$(sed 's/\b/\n/g' <<< "$urlsou" | grep -c WOW)
echo "Total :" "$result"

您提到您不想学习另一种语言,好吧。但要知道这只是一个快速而肮脏的脚本,仅此而已。

关于Linux Bash 脚本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19646103/

相关文章:

linux - insmod错误: inserting './hello.ko' : -1 Invalid module format"

linux - 在带有 LAMPP 的 Ubuntu 中使用 crontab

linux - 将命令的输出分配给全局数组,而不会在子 shell 之后丢失数组

java - 如何在终端中访问 Java 属性

linux - Bash 脚本 : Can't set a variable using which

linux - 从特定字段的 csv 中删除行,如果它包含以下 x 个字符串/单词

shell - sed(1) : prepend a line

linux - 按不带引号的特定列过滤文本文件行

c - 在 Linux 中使用 pcap 获取接口(interface)的 IP 地址

shell - 如何使用 sed 或 awk 获取字符串中空格后的值?