iT邦幫忙

2017 iT 邦幫忙鐵人賽
DAY 9
0
自我挑戰組

30 天的 ShellScript 教室解決開發者的困擾系列 第 9

[鐵人賽第09天] 介紹管線與 grep 指令

昨天講了怎麼把指令的結果存起來、也講了怎麼把指令的結果丟進去另一個指令的參數,也講過如何把一個指令的執行結果丟進另一個指令的 stdin 。為了示範怎麼把 stdout 也稍微介紹了 grep 指令。

今天來把 grep 指令寫完吧。

grep 指令,除了拿來接 stdin 以外,也可以拿來直接尋找檔案的特定字串,用法如下:

grep "dd-han" /etc/passwd

grep 指令除了可以找出特定一行,也可以找出幫忙標出行數,只要加上 -n 參數即可:

grep -n "Action" player.js
264:  var snapshotAction = function() {
291:  var videoErrorAction = function(event) {
327:  var videoVolumechangeAction = function(event) {
346:  var seekbarInputAction = function(event) {
351:  var seekbarChangeAction = function(event) {
376:  var videoLaddedmetadataAction = function(event) {
383:  var videoTimeupdateAction = function(event) {
435:  var videoProgressAction = function(event) {
440:  var videoPlayAction = function(event) {
442:    //playStatus.checkTimer = setInterval(checkTimerAction,100);
446:  var videoPlayingAction = function(event) {
451:    //playStatus.checkTimer = setInterval(checkTimerAction,100);
454:  var videoPauseAction = function(event) {
458:  var videoEndAction = function(event) {
469:  var loadingAction = function() {

不過有時候找程式比較麻煩,不能只看那一行,會需要前後數行對照,那就這樣下指令吧:

grep -B 1 -A 5 -n "Action" player.js
263-  // event actions (most private)
264:  var snapshotAction = function() {
265-    var currentFile = playlist[playStatus.playlistIndex];
266-    var currentTime = DOMs.video.currentTime * 1000;
267-    if (currentFile.isBlack) {
268-      // show message by ZK
269-      var totalResult = "black" + ",";
--
290-  }
291:  var videoErrorAction = function(event) {
292-    // error code here: http://www.w3schools.com/tags/av_prop_error.asp
293-    var error = event.target.error;
294-    var browser = navigator.userAgent;
295-    var fileURL = playlist[playStatus.playlistIndex].url;
296-
--

然後,下指令如果忘了怎麼打,在 Unix Like 系統「通常」都可以加上 --help 來查詢指令可以用的參數;在 Windows 系統下則是習慣加上 /? 來看指令可用參數。除了 --help 外,如果指令有寫說明書,你也可以用 man grep 來查看指令的說明書( Manual 縮寫 man )。


我是誰?
我是 dd-han ,可以叫我呆翰,是國立臺中科技大學的延畢生 與 創科資訊的時習生。


上一篇
[鐵人賽第08天] Command Substitution 的用法
下一篇
[鐵人賽第10天] 如何撰寫 Shell Script
系列文
30 天的 ShellScript 教室解決開發者的困擾23
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

1 則留言

0
卡斯
iT邦研究生 1 級 ‧ 2016-12-23 23:02:47

時習生? 算時薪!!!!/images/emoticon/emoticon31.gif

我要留言

立即登入留言