3.sed: 用法: sed [OPTION]... {script-only-if-no-other-script} [input-file]...
sed即是 string editor.是一个很强大的文本处理命令,常和正则表达式结合使用。例如:
brandon@ubuntu:~/shell/Chapter1$ vim sed_test.txt
brandon@ubuntu:~/shell/Chapter1$ cat sed_test.txt
1.This file is used to test sed command.
2.test start.
3.test end.
4.test start again.
5.test end again.
brandon@ubuntu:~/shell/Chapter1$ sed '/^$/d' sed_test.txt
1.This file is used to test sed command.
2.test start.
3.test end.
4.test start again.
5.test end again.
brandon@ubuntu:~/shell/Chapter1$
4.简单的正则表达式运用。
下面是真正的脚本内容:
#!/bin/bash
#Desc: Fetch gmail
username='YOUR_USERNAME_HERE'
password='YOUR_PASSWORD_HERE'
SHOW_COUNT=6 # No of recent unread mails to be shown
echo
curl -u $username:$password --cookie "YOUR_COOKIE_CONTENT_HERE" --silent "https://mail.google.com/mail/feed/atom" | \
tr -d '\n' | sed 's:</entry>:\n:g' |\
sed -n 's/.*<title>\(.*\)<\/title.*<author><name>\([^<]*\)<\/name><email>\([^<]*\).*/From: \2 [\3] \nSubject: \1\n/p' | \
head -n $(( $SHOW_COUNT * 3 ))
注意有些可能要通过cookie验证才能访问,则要带上--cookie命令:进入邮箱后安F12,然后在Network中单击某一个Name path请求,然后找到cookie复制其后面的内容到YOUR_COOKIE_CONTENT_HERE,对于cookie我也不熟,不懂的可以google一下。
命令tr -d '\n' 即删除换行符.
命令 sed 's:</entry>:\n:g' 即将xml中</entry>元素用\n替换成换行符
sed -n 's/will_be_replace_string/replace_string/p'中: 从原来的文本信息提取出自己想要的信息,然后按照想要的格式输出。 “\1“是第一个()中的内容,为<title>(.*\)<\/title>中的()所代表的内容及邮件标题。 "\2"即就是第二个()中的内容,”\3“即是第三个()中的内容。head -n 值显示前面这几行(SHOW_COUNT*3)信息。
下面是我自己运行后的输出结果:
brandon@ubuntu:~/shell/Chapter5$ ./Fetch_gmail_tool.sh
From: 数字时代 [cdtchinese@chinadigitaltimes.net]
Subject: 《中国数字时代》每日电邮 2014/10/19
From: YouTube [noreply@youtube.com]
Subject: PewDiePie: "TRAINING TO BE COME THE BEST! - Anki Training" and more videos
From: 数字时代 [cdtchinese@chinadigitaltimes.net]
Subject: 《中国数字时代》每日电邮 2014/10/18
From: 数字时代 [cdtchinese@chinadigitaltimes.net]
Subject: 《中国数字时代》每日电邮 2014/10/16
From: Google [no-reply@accounts.google.com]
Subject: Google Account password changed
From: 数字时代 [cdtchinese@chinadigitaltimes.net]
Subject: 《中国数字时代》每日电邮 2014/10/15
brandon@ubuntu:~/shell/Chapter5$