【问题标题】:Connecting Wget and Sed Commands in One Script?在一个脚本中连接 Wget 和 Sed 命令?
【发布时间】:2014-02-11 11:55:23
【问题描述】:

我使用 3 个命令(wget/sed/和一个 tr/sort),它们都在命令行中工作,以生成最常用的单词列表。我按顺序使用命令,保存 sed 的输出以在 tr/sort 命令中使用。现在我需要毕业来编写一个结合这 3 个命令的脚本。因此,1) wget 下载一个文件,我将其放入 2) sed -e 's/<[^>]*>//g' wget-file.txt,然后输出 > 转到 3)

cat sed-output.txt | tr -cs A-Za-z\'  '\n' | tr A-Z  a-z | sort | uniq -c | 
sort -k1,1nr -k2 | sed ${1:-100}q > words-list.txt

我知道关于使用正则表达式删除 HTML 标记的问题/争论,但是这 3 个命令目前对我有用。因此,感谢您帮助将其整合在一起。

【问题讨论】:

  • 您似乎已经知道如何将输出从一个命令传送到另一个命令。目前还不清楚你在问什么,你还没有在做什么。你可以wget -O- http://... | sed ... | tr ...
  • 感谢 larsks,管道输出做到了(并换行 \ 为方便起见)。

标签: bash shell sed


【解决方案1】:

使用 awk。

wget -O- http://down.load/file| awk '{ gsub(/<[^>]*>/,"")                # remove the content in label <>
       $0=tolower($0)                    # convert all to lowercase
       gsub(/[^a-z]]*/," ")              # remove all non-letter chars and replaced by space
       for (i=1;i<=NF;i++) a[$i]++       # save each word in array a, and sum it.
     }END{for (i in a) print a[i],i|"sort -nr|head -100"}'   # print the result, sort it, and get the top 100 records only

【讨论】:

  • 感谢 awk 示例。您能否展示如何包含 wget 页面/文件下载?提前致谢。
  • 当然,已更新。管道 wget 输出到 awk 命令:wget command |awk
  • 我正在尝试你的脚本,它给出了“无法写入 `-'(无错误)”。并且没有创建输出文件。我在输出文件之前尝试过使用 > ,它会创建空文件。我也尝试过 \ 行尾,这会引发“\ 不是最后一个字符”错误。 Sed 脚本有效,但我也想从您的 awk 解决方案中学习。那么请您确认/检查为什么这不起作用?此外,学习 awk,^ 符号匹配字符串的开头,但在 gsub(/[^a-z]]*/," ") 中似乎 ^ 排除了任何不是字母的东西?为什么开引号前有逗号?没有找到,在 man awk 中。谢谢。
  • 我再次测试,在我的环境 (CYGWIN) 中似乎很好,你能告诉我 awk 版本吗? awk --version |head -1。如果您在 Solaris 中运行 awk,请使用 /usr/xpg4/bin/awk
  • BMW,它在标准输出和输出方面都表现出色 > 在 Linux、GNU Awk 4.0.1 上的家中输出文件。没有在朋友家的 CYGWIN 上输出。稍后将在那里查看 awk 版本......但谢谢!使用 awk 非常棒,也为我提供了更多可供学习的编程方法。非常感谢您的帮助。
【解决方案2】:

这个命令应该可以完成这项工作:

wget -O- http://down.load/file | sed -e 's/<[^>]*>//g' | \
tr -cs A-Za-z\'  '\n' | tr A-Z  a-z | sort | uniq -c | \
sort -k1,1nr -k2 | sed ${1:-100}q > words-list.txt

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-08-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多