详解Shell采集百度下拉框中各个命令的作用及参考文献

详解Shell采集百度下拉框中各个命令的作用及参考文献

curl -s “https://sp0.baidu.com/5a1Fazu8AA54nxGko9WTAnF6hhy/su?wd=seo”|iconv -f gbk -t utf-8|awk -F”:” ‘{print $4}’|grep -oP ‘(?<=”).*?(?=”)’|sed ‘s/,//g’

自此,分析一下这个表达式的组成,将网址以[website]代指:

curl -s “[website]” | iconv -f gbk -t utf-8 | awk -F":"
'{print $4}'
| grep -oP '(?<=").*?(?=")' | sed 's/,//g'

对以上的命令进行拆分,如下:

  1. curl -s “[website]”
  2. | iconv -f gbk -t utf-8
  3. | awk -F":"
    '{print $4}'
  4. | grep -oP '(?<=").*?(?=")'
  5. | sed 's/,//g'

逐一解释:
| 这个符号是管道的意思,起着承接的作用,表示将此命令得到的结果传递到下一个命令中。

第一节

curl -s 和 -d有什么区别?
-s–silent静默模式的简写,意思就是不显示错误和进度,如果没有指定-d(或者其他方式)默认为GET
-d–data的简写,–data使用POST的方法,-d和面的是post的数据。
其中大写的-S和-D均有其他意思,-S/--show-error:显示错误。 -D/--dump-header<file>:把header信息写入到该文件中

第二节

iconv -f gbk -t utf-8命令是什么意思
此命令的意思呢就是把GBK编码的文件转成UTF-8编码的文件,其中值得注意的是如果原来就是utf-8编码,使用iconv -f GBK -t UTF-8命令转换后,会出现乱码,或截断等各种问题;一定要保证原文件是不是utf-8编码。

iconv有如下选项可用
输入/输出格式规范:
-f, --from-code=名称 原始文本编码
-t, --to-code=名称 输出编码
信息:
-l, --list 列举所有已知的字符集
输出控制:
-c 从输出中忽略无效的字符
-o, --output=FILE 输出文件
-s, --silent 关闭警告
--verbose 打印进度信息

第三节

awk -F”:” ‘{print $4}’ 是什么意思?
cawk 也是一个非常棒的数据处理工具!sed 常常用于一整个行的处理, awk 则比较倾向于一行当中分成数个『栏位』(或者称为一个域,也就是一列)来处理。因此,awk 相当的适合处理小型的数据数据处理呢!awk 通常运行的模式是这样的:
awk '条件类型1{动作1} 条件类型2{动作2} ...' filename
参考如下链接
Shell awk入门
AWK的用法示例,从0到1的理解并实操

第四节

grep -oP ‘(?<=”).*?(?=”)’ 命令是什么意思?
Grep
全称Global Regular Expression Print,表示全局正则表达式
是一个强大的文本搜索工具,采用正则匹配
1、命令格式
grep [options] files
2、主要参数
-c: 只输出匹配行的数目
-i: 不区分大小写
-n:显示匹配航以及行号
-l:查询多文件的时候只输出包含匹配字符的文件名
-v:反向匹配,即显示不匹配的行
-h: 查询的时候不适用文件名
-s:不显示错误信息
3、部分正则表达式
\ 反义字符:如”\”\”“表示匹配””
^$ 开始和结束
[] 单个字符,[A]
[ – ] 匹配一个范围,[0-9a-zA-Z]匹配所有数字和字母
*前面的字符出现0次或者多次
+前面的字符出现了一次或者多次
. 任意字符
参考:Grep命令详解-9个经典使用场景

第五节

sed ‘s/,//g’的命令是什么意思?
再解释这个命令前我们来看看下面这个是什么意思吧:
sed ‘s/[0-9]//g’
去除文本中的所有数字
[0-9]匹配一个数字,
s/A/B/ 将A替换为B
g表示全局替换

那么上面的例子就不难看出了,其意思就是去除文本中的所有,符号。
参考链接:sed入门教程

请最后来看一看这个shell的意思吧:
curl -s "https://sp0.baidu.com/5a1Fazu8AA54nxGko9WTAnF6hhy/su?wd=seo"|iconv -f gbk -t utf-8|awk -F":" '{print $4}'|grep -oP '(?<=").*?(?=")'|sed 's/,//g'

ckhero