grep.html 19 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588
  1. <?xml version="1.0" encoding="utf-8"?>
  2. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
  3. "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
  4. <html xmlns="http://www.w3.org/1999/xhtml" lang="en" xml:lang="en">
  5. <head>
  6. <!-- 2017-11-11 sáb 12:27 -->
  7. <meta http-equiv="Content-Type" content="text/html;charset=utf-8" />
  8. <meta name="viewport" content="width=device-width, initial-scale=1" />
  9. <title>Grep</title>
  10. <meta name="generator" content="Org mode" />
  11. <style type="text/css">
  12. <!--/*--><![CDATA[/*><!--*/
  13. .title { text-align: center;
  14. margin-bottom: .2em; }
  15. .subtitle { text-align: center;
  16. font-size: medium;
  17. font-weight: bold;
  18. margin-top:0; }
  19. .todo { font-family: monospace; color: red; }
  20. .done { font-family: monospace; color: green; }
  21. .priority { font-family: monospace; color: orange; }
  22. .tag { background-color: #eee; font-family: monospace;
  23. padding: 2px; font-size: 80%; font-weight: normal; }
  24. .timestamp { color: #bebebe; }
  25. .timestamp-kwd { color: #5f9ea0; }
  26. .org-right { margin-left: auto; margin-right: 0px; text-align: right; }
  27. .org-left { margin-left: 0px; margin-right: auto; text-align: left; }
  28. .org-center { margin-left: auto; margin-right: auto; text-align: center; }
  29. .underline { text-decoration: underline; }
  30. #postamble p, #preamble p { font-size: 90%; margin: .2em; }
  31. p.verse { margin-left: 3%; }
  32. pre {
  33. border: 1px solid #ccc;
  34. box-shadow: 3px 3px 3px #eee;
  35. padding: 8pt;
  36. font-family: monospace;
  37. overflow: auto;
  38. margin: 1.2em;
  39. }
  40. pre.src {
  41. position: relative;
  42. overflow: visible;
  43. padding-top: 1.2em;
  44. }
  45. pre.src:before {
  46. display: none;
  47. position: absolute;
  48. background-color: white;
  49. top: -10px;
  50. right: 10px;
  51. padding: 3px;
  52. border: 1px solid black;
  53. }
  54. pre.src:hover:before { display: inline;}
  55. /* Languages per Org manual */
  56. pre.src-asymptote:before { content: 'Asymptote'; }
  57. pre.src-awk:before { content: 'Awk'; }
  58. pre.src-C:before { content: 'C'; }
  59. /* pre.src-C++ doesn't work in CSS */
  60. pre.src-clojure:before { content: 'Clojure'; }
  61. pre.src-css:before { content: 'CSS'; }
  62. pre.src-D:before { content: 'D'; }
  63. pre.src-ditaa:before { content: 'ditaa'; }
  64. pre.src-dot:before { content: 'Graphviz'; }
  65. pre.src-calc:before { content: 'Emacs Calc'; }
  66. pre.src-emacs-lisp:before { content: 'Emacs Lisp'; }
  67. pre.src-fortran:before { content: 'Fortran'; }
  68. pre.src-gnuplot:before { content: 'gnuplot'; }
  69. pre.src-haskell:before { content: 'Haskell'; }
  70. pre.src-hledger:before { content: 'hledger'; }
  71. pre.src-java:before { content: 'Java'; }
  72. pre.src-js:before { content: 'Javascript'; }
  73. pre.src-latex:before { content: 'LaTeX'; }
  74. pre.src-ledger:before { content: 'Ledger'; }
  75. pre.src-lisp:before { content: 'Lisp'; }
  76. pre.src-lilypond:before { content: 'Lilypond'; }
  77. pre.src-lua:before { content: 'Lua'; }
  78. pre.src-matlab:before { content: 'MATLAB'; }
  79. pre.src-mscgen:before { content: 'Mscgen'; }
  80. pre.src-ocaml:before { content: 'Objective Caml'; }
  81. pre.src-octave:before { content: 'Octave'; }
  82. pre.src-org:before { content: 'Org mode'; }
  83. pre.src-oz:before { content: 'OZ'; }
  84. pre.src-plantuml:before { content: 'Plantuml'; }
  85. pre.src-processing:before { content: 'Processing.js'; }
  86. pre.src-python:before { content: 'Python'; }
  87. pre.src-R:before { content: 'R'; }
  88. pre.src-ruby:before { content: 'Ruby'; }
  89. pre.src-sass:before { content: 'Sass'; }
  90. pre.src-scheme:before { content: 'Scheme'; }
  91. pre.src-screen:before { content: 'Gnu Screen'; }
  92. pre.src-sed:before { content: 'Sed'; }
  93. pre.src-sh:before { content: 'shell'; }
  94. pre.src-sql:before { content: 'SQL'; }
  95. pre.src-sqlite:before { content: 'SQLite'; }
  96. /* additional languages in org.el's org-babel-load-languages alist */
  97. pre.src-forth:before { content: 'Forth'; }
  98. pre.src-io:before { content: 'IO'; }
  99. pre.src-J:before { content: 'J'; }
  100. pre.src-makefile:before { content: 'Makefile'; }
  101. pre.src-maxima:before { content: 'Maxima'; }
  102. pre.src-perl:before { content: 'Perl'; }
  103. pre.src-picolisp:before { content: 'Pico Lisp'; }
  104. pre.src-scala:before { content: 'Scala'; }
  105. pre.src-shell:before { content: 'Shell Script'; }
  106. pre.src-ebnf2ps:before { content: 'ebfn2ps'; }
  107. /* additional language identifiers per "defun org-babel-execute"
  108. in ob-*.el */
  109. pre.src-cpp:before { content: 'C++'; }
  110. pre.src-abc:before { content: 'ABC'; }
  111. pre.src-coq:before { content: 'Coq'; }
  112. pre.src-groovy:before { content: 'Groovy'; }
  113. /* additional language identifiers from org-babel-shell-names in
  114. ob-shell.el: ob-shell is the only babel language using a lambda to put
  115. the execution function name together. */
  116. pre.src-bash:before { content: 'bash'; }
  117. pre.src-csh:before { content: 'csh'; }
  118. pre.src-ash:before { content: 'ash'; }
  119. pre.src-dash:before { content: 'dash'; }
  120. pre.src-ksh:before { content: 'ksh'; }
  121. pre.src-mksh:before { content: 'mksh'; }
  122. pre.src-posh:before { content: 'posh'; }
  123. /* Additional Emacs modes also supported by the LaTeX listings package */
  124. pre.src-ada:before { content: 'Ada'; }
  125. pre.src-asm:before { content: 'Assembler'; }
  126. pre.src-caml:before { content: 'Caml'; }
  127. pre.src-delphi:before { content: 'Delphi'; }
  128. pre.src-html:before { content: 'HTML'; }
  129. pre.src-idl:before { content: 'IDL'; }
  130. pre.src-mercury:before { content: 'Mercury'; }
  131. pre.src-metapost:before { content: 'MetaPost'; }
  132. pre.src-modula-2:before { content: 'Modula-2'; }
  133. pre.src-pascal:before { content: 'Pascal'; }
  134. pre.src-ps:before { content: 'PostScript'; }
  135. pre.src-prolog:before { content: 'Prolog'; }
  136. pre.src-simula:before { content: 'Simula'; }
  137. pre.src-tcl:before { content: 'tcl'; }
  138. pre.src-tex:before { content: 'TeX'; }
  139. pre.src-plain-tex:before { content: 'Plain TeX'; }
  140. pre.src-verilog:before { content: 'Verilog'; }
  141. pre.src-vhdl:before { content: 'VHDL'; }
  142. pre.src-xml:before { content: 'XML'; }
  143. pre.src-nxml:before { content: 'XML'; }
  144. /* add a generic configuration mode; LaTeX export needs an additional
  145. (add-to-list 'org-latex-listings-langs '(conf " ")) in .emacs */
  146. pre.src-conf:before { content: 'Configuration File'; }
  147. table { border-collapse:collapse; }
  148. caption.t-above { caption-side: top; }
  149. caption.t-bottom { caption-side: bottom; }
  150. td, th { vertical-align:top; }
  151. th.org-right { text-align: center; }
  152. th.org-left { text-align: center; }
  153. th.org-center { text-align: center; }
  154. td.org-right { text-align: right; }
  155. td.org-left { text-align: left; }
  156. td.org-center { text-align: center; }
  157. dt { font-weight: bold; }
  158. .footpara { display: inline; }
  159. .footdef { margin-bottom: 1em; }
  160. .figure { padding: 1em; }
  161. .figure p { text-align: center; }
  162. .inlinetask {
  163. padding: 10px;
  164. border: 2px solid gray;
  165. margin: 10px;
  166. background: #ffffcc;
  167. }
  168. #org-div-home-and-up
  169. { text-align: right; font-size: 70%; white-space: nowrap; }
  170. textarea { overflow-x: auto; }
  171. .linenr { font-size: smaller }
  172. .code-highlighted { background-color: #ffff00; }
  173. .org-info-js_info-navigation { border-style: none; }
  174. #org-info-js_console-label
  175. { font-size: 10px; font-weight: bold; white-space: nowrap; }
  176. .org-info-js_search-highlight
  177. { background-color: #ffff00; color: #000000; font-weight: bold; }
  178. .org-svg { width: 90%; }
  179. /*]]>*/-->
  180. </style>
  181. <link rel="stylesheet" type="text/css" href="http://www.pirilampo.org/styles/readtheorg/css/htmlize.css"/>
  182. <link rel="stylesheet" type="text/css" href="http://www.pirilampo.org/styles/readtheorg/css/readtheorg.css"/>
  183. <script type="text/javascript">
  184. /*
  185. @licstart The following is the entire license notice for the
  186. JavaScript code in this tag.
  187. Copyright (C) 2012-2017 Free Software Foundation, Inc.
  188. The JavaScript code in this tag is free software: you can
  189. redistribute it and/or modify it under the terms of the GNU
  190. General Public License (GNU GPL) as published by the Free Software
  191. Foundation, either version 3 of the License, or (at your option)
  192. any later version. The code is distributed WITHOUT ANY WARRANTY;
  193. without even the implied warranty of MERCHANTABILITY or FITNESS
  194. FOR A PARTICULAR PURPOSE. See the GNU GPL for more details.
  195. As additional permission under GNU GPL version 3 section 7, you
  196. may distribute non-source (e.g., minimized or compacted) forms of
  197. that code without the copy of the GNU GPL normally required by
  198. section 4, provided you include this license notice and a URL
  199. through which recipients can access the Corresponding Source.
  200. @licend The above is the entire license notice
  201. for the JavaScript code in this tag.
  202. */
  203. <!--/*--><![CDATA[/*><!--*/
  204. function CodeHighlightOn(elem, id)
  205. {
  206. var target = document.getElementById(id);
  207. if(null != target) {
  208. elem.cacheClassElem = elem.className;
  209. elem.cacheClassTarget = target.className;
  210. target.className = "code-highlighted";
  211. elem.className = "code-highlighted";
  212. }
  213. }
  214. function CodeHighlightOff(elem, id)
  215. {
  216. var target = document.getElementById(id);
  217. if(elem.cacheClassElem)
  218. elem.className = elem.cacheClassElem;
  219. if(elem.cacheClassTarget)
  220. target.className = elem.cacheClassTarget;
  221. }
  222. /*]]>*///-->
  223. </script>
  224. </head>
  225. <body>
  226. <div id="content">
  227. <h1 class="title">Grep</h1>
  228. <div id="table-of-contents">
  229. <h2>Table of Contents</h2>
  230. <div id="text-table-of-contents">
  231. <ul>
  232. <li><a href="#org2841edb">1. GREP</a>
  233. <ul>
  234. <li><a href="#org4d35845">1.1. Simple description of Grep:</a></li>
  235. <li><a href="#org8adb0a3">1.2. Basic example</a></li>
  236. <li><a href="#org16f31f9">1.3. Better examples</a>
  237. <ul>
  238. <li><a href="#org05243c7">1.3.1. Table for grep commands</a></li>
  239. </ul>
  240. </li>
  241. <li><a href="#org79394db">1.4. What else can be done</a></li>
  242. <li><a href="#orgd0821e5">1.5. Exercise</a></li>
  243. <li><a href="#orgfb89fdf">1.6. Resources</a></li>
  244. </ul>
  245. </li>
  246. </ul>
  247. </div>
  248. </div>
  249. <div id="outline-container-org2841edb" class="outline-2">
  250. <h2 id="org2841edb"><span class="section-number-2">1</span> GREP</h2>
  251. <div class="outline-text-2" id="text-1">
  252. <p>
  253. <i>Dependencies:</i> In order to learn grep this can be necessary for you to learn before:
  254. </p>
  255. <ul class="org-ul">
  256. <li>Unix Pipes</li>
  257. <li>Shell Basics</li>
  258. <li>Data Streams</li>
  259. <li>Unix-like Operative Systems</li>
  260. </ul>
  261. </div>
  262. <div id="outline-container-org4d35845" class="outline-3">
  263. <h3 id="org4d35845"><span class="section-number-3">1.1</span> Simple description of Grep:</h3>
  264. <div class="outline-text-3" id="text-1-1">
  265. <p>
  266. Grep is a UNIX command for searching text that matches a string.
  267. If we want to look for "text" in $file then grep is exactly the tool we need!
  268. It can also be used with the UNIX pipeline <code>|</code>
  269. </p>
  270. <ul class="org-ul">
  271. <li>Before we start learning grep please create the following file named <code>example_file.txt</code></li>
  272. </ul>
  273. <pre class="example">
  274. example_file.txt
  275. The Apple is red
  276. The orange is old
  277. The pear is tasty
  278. The date of the party
  279. The dragon likes to eat fruit
  280. I don't know what dewberry is
  281. My berries are too old
  282. for $FILE
  283. *bold*
  284. \path\to\file
  285. 100.00
  286. 52.34
  287. Up here^
  288. [some stuff]
  289. </pre>
  290. </div>
  291. </div>
  292. <div id="outline-container-org8adb0a3" class="outline-3">
  293. <h3 id="org8adb0a3"><span class="section-number-3">1.2</span> Basic example</h3>
  294. <div class="outline-text-3" id="text-1-2">
  295. <pre class="example">
  296. $ grep orange example_file.txt
  297. The orange is old
  298. </pre>
  299. <p>
  300. That simple command is the way to use grep: You call grep with two arguments, first one is the text you want to find,
  301. second is where you want to find it. Of course that is very simple, so we should look at better examples.
  302. </p>
  303. </div>
  304. </div>
  305. <div id="outline-container-org16f31f9" class="outline-3">
  306. <h3 id="org16f31f9"><span class="section-number-3">1.3</span> Better examples</h3>
  307. <div class="outline-text-3" id="text-1-3">
  308. <p>
  309. Now that we have seen grep in action is time to put it to better use, after all grep is one of the most powerful and useful commands in the UNIX world.
  310. First of all you should notice that grep is <b>case sensitive.</b> This means that if you call <code>$grep foo file.txt</code> grep will only find "foo" but not "Foo".
  311. </p>
  312. <ul class="org-ul">
  313. <li>Case insensitive search can be done with the flag <code>-i</code></li>
  314. </ul>
  315. <pre class="example">
  316. $ grep -i apple example_file.txt
  317. The Apple is red
  318. </pre>
  319. <p>
  320. It is common in the UNIX world to have the need to look for meta characters <code>^$\.*[]</code>
  321. </p>
  322. <ul class="org-ul">
  323. <li>Meta characters can be find with the special flag <code>-F</code></li>
  324. </ul>
  325. <pre class="example">
  326. $ grep -F '$FILE' example_file.txt
  327. for $FILE
  328. </pre>
  329. <ul class="org-ul">
  330. <li>Another common case might be the need for looking for two or more different strings. We can have different options</li>
  331. </ul>
  332. <p>
  333. here:
  334. </p>
  335. <ul class="org-ul">
  336. <li>Match any of the strings: use <code>-e</code> flag</li>
  337. </ul>
  338. <pre class="example">
  339. $ grep -e 'foo' -e 'bar'
  340. </pre>
  341. <ul class="org-ul">
  342. <li>Match all of the strings: use a pipeline <code>|</code> to stream from one grep to another</li>
  343. </ul>
  344. <pre class="example">
  345. $ grep 'foo' | grep 'bar'
  346. </pre>
  347. <ul class="org-ul">
  348. <li>Sometimes you are looking for a pattern for example, you have a bunch of names file01.txt file02.txt and so on, in this case a period <code>.</code> can be used as a wildcard that matches exactly one character</li>
  349. </ul>
  350. <pre class="example">
  351. $ls
  352. file01 file02 file03 file001
  353. $ ls | grep file.1
  354. file01
  355. </pre>
  356. <p>
  357. -Notice that <i>file001</i> was not matched, since <code>.</code> stands for only one character, if you need more characters just add more <code>.</code> one for each character
  358. </p>
  359. <pre class="example">
  360. $ls
  361. file01 file02 file03 file001
  362. $ ls | grep file..1
  363. file001
  364. </pre>
  365. <p>
  366. Now that we know how to use the widcard <code>.</code> you might be wondering what happens if you are looking for a file with a period like file.txt.
  367. </p>
  368. <ul class="org-ul">
  369. <li>In this case the correct command is <code>grep 'file\.txt'</code> using both <code>'</code> and <code>\</code> , otherwise grep will match also file1txt file-txt fileatxt and so on:</li>
  370. </ul>
  371. <pre class="example">
  372. $ls
  373. file.txt file1txt file-txt fileatxt
  374. $ ls | grep 'file\.txt '
  375. file.txt
  376. </pre>
  377. </div>
  378. <div id="outline-container-org05243c7" class="outline-4">
  379. <h4 id="org05243c7"><span class="section-number-4">1.3.1</span> Table for grep commands</h4>
  380. <div class="outline-text-4" id="text-1-3-1">
  381. <table border="2" cellspacing="0" cellpadding="6" rules="groups" frame="hsides">
  382. <colgroup>
  383. <col class="org-left" />
  384. <col class="org-left" />
  385. <col class="org-left" />
  386. <col class="org-left" />
  387. </colgroup>
  388. <thead>
  389. <tr>
  390. <th scope="col" class="org-left">Metacharacter</th>
  391. <th scope="col" class="org-left">Function</th>
  392. <th scope="col" class="org-left">Example</th>
  393. <th scope="col" class="org-left">Descrpition</th>
  394. </tr>
  395. </thead>
  396. <tbody>
  397. <tr>
  398. <td class="org-left">^</td>
  399. <td class="org-left">Beginning-of-line anchor</td>
  400. <td class="org-left"><code>'^Up'</code></td>
  401. <td class="org-left">Will display all lines beginning with <code>Up</code></td>
  402. </tr>
  403. <tr>
  404. <td class="org-left">$</td>
  405. <td class="org-left">End-of-line anchor</td>
  406. <td class="org-left"><code>'old'$</code></td>
  407. <td class="org-left">Will display all lines ending with <code>old</code></td>
  408. </tr>
  409. <tr>
  410. <td class="org-left">.</td>
  411. <td class="org-left">Matches single character</td>
  412. <td class="org-left"><code>a..e</code></td>
  413. <td class="org-left">Will display lines containing <code>a</code> followed by <i>two</i> characters, followed y an e</td>
  414. </tr>
  415. <tr>
  416. <td class="org-left">*</td>
  417. <td class="org-left">Matches zero or more characters preceding the asterisk</td>
  418. <td class="org-left"><code>'too*'</code></td>
  419. <td class="org-left">Will display lines with 'to', or 'too' because 'to' is a zero match character and 'too' is a one match character</td>
  420. </tr>
  421. <tr>
  422. <td class="org-left">[ ]</td>
  423. <td class="org-left">Matches single character in the set</td>
  424. <td class="org-left"><code>'[Aa]pple'</code></td>
  425. <td class="org-left">Will display lines containing <code>Apple</code> or <code>apple</code></td>
  426. </tr>
  427. <tr>
  428. <td class="org-left">[^]</td>
  429. <td class="org-left">Matches single character not in the set</td>
  430. <td class="org-left"><code>'[^Tt]he'</code></td>
  431. <td class="org-left">Will display lines not containing a character <code>T</code> or <code>t</code> followed by <code>he</code> but it will display all the other lines with <code>he</code></td>
  432. </tr>
  433. <tr>
  434. <td class="org-left">\&lt;</td>
  435. <td class="org-left">Beginning-of-word anchor</td>
  436. <td class="org-left"><code>'\&lt;date'</code></td>
  437. <td class="org-left">Will display lines containing a word that begins with "date"</td>
  438. </tr>
  439. <tr>
  440. <td class="org-left">\&gt;</td>
  441. <td class="org-left">End-of-word anchor</td>
  442. <td class="org-left"><code>'ear\&gt;'</code></td>
  443. <td class="org-left">Will display lines containing a word that ends with "ear"</td>
  444. </tr>
  445. </tbody>
  446. </table>
  447. </div>
  448. </div>
  449. </div>
  450. <div id="outline-container-org79394db" class="outline-3">
  451. <h3 id="org79394db"><span class="section-number-3">1.4</span> What else can be done</h3>
  452. <div class="outline-text-3" id="text-1-4">
  453. <p>
  454. Cool stuff that you can do now with this new knowledge.
  455. </p>
  456. <p>
  457. A pretty basic use of the pipeline with grep is explained next:
  458. </p>
  459. <pre class="example">
  460. $ grep -v "e$" example_file.txt | grep "^d"
  461. </pre>
  462. <p>
  463. The first command <code>grep -v "e$" example_file.txt</code> matches all lines ending in <code>"e"</code>. The <code>"-v"</code> flag means <i>omit all
  464. matches,</i> thus the matching <code>"e$"</code> lines don't show up on stdout.
  465. </p>
  466. <p>
  467. (<b>Note</b> In UNIX <code>$</code> represents the end of a line coversely <code>^</code> is the beginning of a line <b>End Note</b>)
  468. </p>
  469. <p>
  470. The result of this command on stdout is (as said before, this won't be shown to user):
  471. </p>
  472. <pre class="example">
  473. pear
  474. dragonfruit
  475. dewberry
  476. berries
  477. </pre>
  478. <p>
  479. Which is then piped into the second command, <code>grep "^d"</code>. Just like how having <code>"$"</code> next to <code>"e"</code> meant <i>match e
  480. when it's next to the end of the line</i>, having <code>"^"</code> next to <code>"d"</code> meants <i>match d when it's next to the start of the line.</i>
  481. </p>
  482. <p>
  483. So, the final ouput would be this:
  484. </p>
  485. <pre class="example">
  486. dragonfruit
  487. dewberry
  488. </pre>
  489. </div>
  490. </div>
  491. <div id="outline-container-orgd0821e5" class="outline-3">
  492. <h3 id="orgd0821e5"><span class="section-number-3">1.5</span> Exercise</h3>
  493. <div class="outline-text-3" id="text-1-5">
  494. <p>
  495. exercise.txt:
  496. exercise.sh:
  497. </p>
  498. <pre class="example">
  499. if $(whereis wget)
  500. then
  501. wget komprendo.net/x/x/exercise.txt
  502. else
  503. curl komprendo.net/x/x/exercise.txt &gt; exercise.txt
  504. fi
  505. </pre>
  506. </div>
  507. </div>
  508. <div id="outline-container-orgfb89fdf" class="outline-3">
  509. <h3 id="orgfb89fdf"><span class="section-number-3">1.6</span> Resources</h3>
  510. <div class="outline-text-3" id="text-1-6">
  511. <p>
  512. info grep (better content than man grep)
  513. </p>
  514. <ul class="org-ul">
  515. <li><a href="https://learnbyexample.gitbooks.io/command-line-text-processing/content/gnu_grep.html">Learn By Example - Grep</a></li>
  516. <li><a href="http://www.panix.com/~elflord/unix/grep.html">Unix and Linux - Grep</a></li>
  517. <li><a href="https://linuxjourney.com/lesson/grep-command">Linux Journey - Grep</a></li>
  518. </ul>
  519. </div>
  520. </div>
  521. </div>
  522. </div>
  523. <div id="postamble" class="status">
  524. <p class="date">Created: 2017-11-11 sáb 12:27</p>
  525. <p class="validation"><a href="http://validator.w3.org/check?uri=referer">Validate</a></p>
  526. </div>
  527. </body>
  528. </html>