{"id":706,"date":"2021-12-07T23:41:27","date_gmt":"2021-12-07T15:41:27","guid":{"rendered":"https:\/\/blog.cauchyschwarz.com\/?p=706"},"modified":"2021-12-07T23:45:50","modified_gmt":"2021-12-07T15:45:50","slug":"shell%e4%b8%ad%e7%9a%84%e5%ad%97%e7%ac%a6%e4%b8%b2%e5%a4%84%e7%90%86","status":"publish","type":"post","link":"https:\/\/blog.cauchyschwarz.com\/?p=706","title":{"rendered":"Shell\u4e2d\u7684\u5b57\u7b26\u4e32\u5904\u7406"},"content":{"rendered":"\n<div id=\"ez-toc-container\" class=\"ez-toc-v2_0_82_2 ez-toc-wrap-right counter-hierarchy ez-toc-counter ez-toc-grey ez-toc-container-direction\">\n<p class=\"ez-toc-title\" style=\"cursor:inherit\">Table of Contents<\/p>\n<label for=\"ez-toc-cssicon-toggle-item-69e0a4163ded5\" class=\"ez-toc-cssicon-toggle-label\"><span class=\"\"><span class=\"eztoc-hide\" style=\"display:none;\">Toggle<\/span><span class=\"ez-toc-icon-toggle-span\"><svg style=\"fill: #999;color:#999\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\" class=\"list-377408\" width=\"20px\" height=\"20px\" viewBox=\"0 0 24 24\" fill=\"none\"><path d=\"M6 6H4v2h2V6zm14 0H8v2h12V6zM4 11h2v2H4v-2zm16 0H8v2h12v-2zM4 16h2v2H4v-2zm16 0H8v2h12v-2z\" fill=\"currentColor\"><\/path><\/svg><svg style=\"fill: #999;color:#999\" class=\"arrow-unsorted-368013\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"10px\" height=\"10px\" viewBox=\"0 0 24 24\" version=\"1.2\" baseProfile=\"tiny\"><path d=\"M18.2 9.3l-6.2-6.3-6.2 6.3c-.2.2-.3.4-.3.7s.1.5.3.7c.2.2.4.3.7.3h11c.3 0 .5-.1.7-.3.2-.2.3-.5.3-.7s-.1-.5-.3-.7zM5.8 14.7l6.2 6.3 6.2-6.3c.2-.2.3-.5.3-.7s-.1-.5-.3-.7c-.2-.2-.4-.3-.7-.3h-11c-.3 0-.5.1-.7.3-.2.2-.3.5-.3.7s.1.5.3.7z\"\/><\/svg><\/span><\/span><\/label><input type=\"checkbox\"  id=\"ez-toc-cssicon-toggle-item-69e0a4163ded5\" checked aria-label=\"Toggle\" \/><nav><ul class='ez-toc-list ez-toc-list-level-1 ' ><li class='ez-toc-page-1 ez-toc-heading-level-1'><a class=\"ez-toc-link ez-toc-heading-1\" href=\"https:\/\/blog.cauchyschwarz.com\/?p=706\/#shell%E4%B8%AD%E7%9A%84%E6%AD%A3%E5%88%99%E8%A1%A8%E8%BE%BE%E5%BC%8F\" >shell\u4e2d\u7684\u6b63\u5219\u8868\u8fbe\u5f0f<\/a><ul class='ez-toc-list-level-2' ><li class='ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-2\" href=\"https:\/\/blog.cauchyschwarz.com\/?p=706\/#%E6%AD%A3%E5%88%99%E8%A1%A8%E8%BE%BE%E5%BC%8F%E5%BC%95%E6%93%8E\" >\u6b63\u5219\u8868\u8fbe\u5f0f\u5f15\u64ce<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-3\" href=\"https:\/\/blog.cauchyschwarz.com\/?p=706\/#%E5%9F%BA%E6%9C%AC%E6%AD%A3%E5%88%99%E8%A1%A8%E8%BE%BE%E5%BC%8F%E5%BC%8FBRE\" >\u57fa\u672c\u6b63\u5219\u8868\u8fbe\u5f0f\u5f0f(BRE)<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-4\" href=\"https:\/\/blog.cauchyschwarz.com\/?p=706\/#%E6%89%A9%E5%B1%95%E6%AD%A3%E5%88%99%E8%A1%A8%E8%BE%BE%E5%BC%8F\" >\u6269\u5c55\u6b63\u5219\u8868\u8fbe\u5f0f<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-5\" href=\"https:\/\/blog.cauchyschwarz.com\/?p=706\/#%E4%B8%80%E4%B8%AA%E4%BD%BF%E7%94%A8%E6%AD%A3%E5%88%99%E8%A1%A8%E8%BE%BE%E5%BC%8F%E7%9A%84%E7%BB%8F%E5%85%B8%E4%BE%8B%E5%AD%90%EF%BC%9A%E5%8C%B9%E9%85%8D%E7%94%B5%E5%AD%90%E9%82%AE%E4%BB%B6%E5%9C%B0%E5%9D%80\" >\u4e00\u4e2a\u4f7f\u7528\u6b63\u5219\u8868\u8fbe\u5f0f\u7684\u7ecf\u5178\u4f8b\u5b50\uff1a\u5339\u914d\u7535\u5b50\u90ae\u4ef6\u5730\u5740<\/a><\/li><\/ul><\/li><li class='ez-toc-page-1 ez-toc-heading-level-1'><a class=\"ez-toc-link ez-toc-heading-6\" href=\"https:\/\/blog.cauchyschwarz.com\/?p=706\/#grep\" >grep<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-1'><a class=\"ez-toc-link ez-toc-heading-7\" href=\"https:\/\/blog.cauchyschwarz.com\/?p=706\/#sed\" >sed<\/a><ul class='ez-toc-list-level-2' ><li class='ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-8\" href=\"https:\/\/blog.cauchyschwarz.com\/?p=706\/#%E5%8F%82%E8%80%83%E8%B5%84%E6%96%99\" >\u53c2\u8003\u8d44\u6599<\/a><\/li><\/ul><\/li><li class='ez-toc-page-1 ez-toc-heading-level-1'><a class=\"ez-toc-link ez-toc-heading-9\" href=\"https:\/\/blog.cauchyschwarz.com\/?p=706\/#paste\" >paste<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-1'><a class=\"ez-toc-link ez-toc-heading-10\" href=\"https:\/\/blog.cauchyschwarz.com\/?p=706\/#awk\" >awk<\/a><\/li><\/ul><\/nav><\/div>\n<h1 class=\"wp-block-heading\" id=\"shell%E4%B8%AD%E7%9A%84%E6%AD%A3%E5%88%99%E8%A1%A8%E8%BE%BE%E5%BC%8F\"><span class=\"ez-toc-section\" id=\"shell%E4%B8%AD%E7%9A%84%E6%AD%A3%E5%88%99%E8%A1%A8%E8%BE%BE%E5%BC%8F\"><\/span>shell\u4e2d\u7684\u6b63\u5219\u8868\u8fbe\u5f0f<span class=\"ez-toc-section-end\"><\/span><\/h1>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"%E6%AD%A3%E5%88%99%E8%A1%A8%E8%BE%BE%E5%BC%8F%E5%BC%95%E6%93%8E\"><span class=\"ez-toc-section\" id=\"%E6%AD%A3%E5%88%99%E8%A1%A8%E8%BE%BE%E5%BC%8F%E5%BC%95%E6%93%8E\"><\/span>\u6b63\u5219\u8868\u8fbe\u5f0f\u5f15\u64ce<span class=\"ez-toc-section-end\"><\/span><\/h2>\n\n\n\n<p>\u6b63\u5219\u8868\u8fbe\u5f0f\u662f\u7528\u6b63\u5219\u8868\u8fbe\u5f0f\u5f15\u64ce(regular expression engine)\u5b9e\u73b0\u7684\u3002\u6b63\u5219\u8868\u8fbe\u5f0f\u662f\u89e3\u91ca\u6b63\u5219\u8868\u8fbe\u5f0f\u6a21\u5f0f\u5e76\u4f7f\u7528\u8fd9\u4e9b\u6a21\u5f0f\u8fdb\u884c\u6587\u672c\u5339\u914d\u7684\u5e95\u5c42\u8f6f\u4ef6\u3002<br>\u5728Linux\u4e2d\u6709\u4e24\u79cd\u6d41\u884c\u7684\u6b63\u5219\u8868\u8fbe\u5f0f\u5f15\u64ce\uff1a<\/p>\n\n\n\n<ol class=\"wp-block-list\"><li>POSIX \u57fa\u672c\u6b63\u5219\u8868\u8fbe\u5f0f(BRE)\u5f15\u64ce<\/li><li>POSIX \u6269\u5c55\u6b63\u5219\u8868\u8fbe\u5f0f(BRE)\u5f15\u64ce<\/li><\/ol>\n\n\n\n<p>\u5927\u591a\u6570Linux\u5de5\u5177\u90fd\u81f3\u5c11\u7b26\u5408POSIX BRE\u5f15\u64ce\u89c4\u8303\uff0c\u80fd\u591f\u8bc6\u522b\u5b83\u5b9a\u4e49\u7684\u6240\u6709\u6a21\u5f0f\u7b26\u53f7\u3002\u4f46\u662f\u5982sed\u4e4b\u7c7b\u7684\u5de5\u5177\u5374\u53ea\u5b9e\u73b0\u4e86BRE\u5f15\u64ce\u89c4\u8303\u7684\u5b50\u96c6(\u4e3a\u4e86\u4e0d\u964d\u4f4e\u5904\u7406\u6570\u636e\u7684\u901f\u5ea6)\u3002<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"%E5%9F%BA%E6%9C%AC%E6%AD%A3%E5%88%99%E8%A1%A8%E8%BE%BE%E5%BC%8F%E5%BC%8Fbre\"><span class=\"ez-toc-section\" id=\"%E5%9F%BA%E6%9C%AC%E6%AD%A3%E5%88%99%E8%A1%A8%E8%BE%BE%E5%BC%8F%E5%BC%8FBRE\"><\/span>\u57fa\u672c\u6b63\u5219\u8868\u8fbe\u5f0f\u5f0f(BRE)<span class=\"ez-toc-section-end\"><\/span><\/h2>\n\n\n\n<p>\u6b63\u5219\u8868\u8fbe\u5f0f\u4e2d\u7684\u7279\u6b8a\u5b57\u7b26\uff1a<code>.*[]^{}\\+?|()<\/code>\u3002<\/p>\n\n\n\n<ol class=\"wp-block-list\"><li>\u951a\u5b57\u7b26<ul><li>\u7528\u4e8e\u9501\u5b9a\u5728\u884c\u9996\u7684\u8131\u5b57\u7b26(<code>^<\/code>)<\/li><li>\u7528\u4e8e\u9501\u5b9a\u5728\u884c\u5c3e\u7684\u7f8e\u5143\u7b26(<code>$<\/code>)<\/li><\/ul><\/li><li>\u70b9\u5b57\u7b26<br>\u70b9\u5b57\u7b26\u7528\u4e8e\u5339\u914d\u4efb\u610f\u7684\u5355\u4e2a\u5b57\u7b26\u3002<\/li><li>\u5b57\u7b26\u7ec4<br>\u7528\u4e2d\u62ec\u53f7\u6765\u6307\u660e\u53ef\u4ee5\u5339\u914d\u7684\u5b57\u7b26\u8303\u56f4\u3002<\/li><li>\u6392\u9664\u5b57\u7b26\u7ec4<br>\u53ef\u4ee5\u901a\u8fc7\u5728\u5b57\u7b26\u7ec4\u7684\u5f00\u5934\u52a0\u4e2a\u8131\u5b57\u7b26\u6765\u53cd\u8f6c\u5b57\u7b26\u7ec4\u7684\u4f5c\u7528\uff0c\u5373\u5339\u914d\u6307\u5b9a\u5b57\u7b26\u7ec4\u4ee5\u5916\u7684\u6240\u6709\u5b57\u7b26\uff0c\u6bd4\u5982\u901a\u8fc7<code>[^ch]<\/code>\u6765\u5339\u914d<code>ch<\/code>\u4e24\u4e2a\u5b57\u7b26\u4e4b\u5916\u7684\u5b57\u7b26\u3002<\/li><li>\u4f7f\u7528\u533a\u95f4<br>\u4f7f\u7528\u8fd9\u79cd<code>[0-9]<\/code>\u533a\u95f4\u7684\u5199\u6cd5\u6765\u907f\u514d\u628a\u6bcf\u4e2a\u5b57\u7b26\u90fd\u5199\u51fa\u6765\u3002<\/li><li>\u7279\u6b8a\u5b57\u7b26\u7ec4<br>BRE\u63d0\u4f9b\u4e86\u4e00\u4e9b\u9884\u5b9a\u4e49\u7684\u7279\u6b8a\u5b57\u7b26\u7ec4\uff1a\u7ec4\u63cf\u8ff0<code>[[:alpha:]]<\/code>\u5339\u914d\u4efb\u610f\u5b57\u6bcd\u5b57\u7b26\uff0c\u4e0d\u8bba\u5927\u5c0f\u5199<code>[[:alnum:]]<\/code>\u5339\u914d\u4efb\u610f\u5b57\u6bcd\u6570\u5b57\u5b57\u7b26<code>[[:blank:]]<\/code>\u5339\u914d\u7a7a\u683c\u6216\u5236\u8868\u7b26<code>[[:digit:]]<\/code>\u5339\u914d0-9\u4e4b\u95f4\u7684\u6570\u5b57<code>[[:lower:]]<\/code>\u5339\u914d\u5c0f\u5199\u5b57\u6bcd\u5b57\u7b26a-z<code>[[:print:]]<\/code>\u5339\u914d\u4efb\u610f\u53ef\u6253\u5370\u5b57\u7b26<code>[[:punct:]]<\/code>\u5339\u914d\u6807\u70b9\u7b26\u53f7<code>[[:space:]]<\/code>\u5339\u914d\u4efb\u610f\u7a7a\u767d\u5b57\u7b26\uff1a\u7a7a\u683c\u3001\u5236\u8868\u7b26\u3001NL\u3001FF\u3001VT\u548cCR<code>[[:upper:]]<\/code>\u5339\u914d\u4efb\u610f\u5927\u5199\u5b57\u6bcd\u5b57\u7b26A-Z<\/li><li>\u661f\u53f7 \u5728\u5b57\u7b26\u540e\u9762\u653e\u7f6e\u661f\u53f7\u8868\u793a\u8be5\u5b57\u7b26\u53ef\u4ee5\u51fa\u73b00\u6b21\u6216\u591a\u6b21\u3002<\/li><\/ol>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"%E6%89%A9%E5%B1%95%E6%AD%A3%E5%88%99%E8%A1%A8%E8%BE%BE%E5%BC%8F\"><span class=\"ez-toc-section\" id=\"%E6%89%A9%E5%B1%95%E6%AD%A3%E5%88%99%E8%A1%A8%E8%BE%BE%E5%BC%8F\"><\/span>\u6269\u5c55\u6b63\u5219\u8868\u8fbe\u5f0f<span class=\"ez-toc-section-end\"><\/span><\/h2>\n\n\n\n<p>\u7531\u4e8egawk\u76f8\u6bd4sed\u6709\u652f\u6301\u6269\u5c55\u6b63\u5219\u8868\u8fbe\u5f0f\u7684\u4f18\u70b9\u548c\u5904\u7406\u6570\u636e\u901f\u5ea6\u66f4\u6162\u7684\u7f3a\u70b9\u3002<\/p>\n\n\n\n<ol class=\"wp-block-list\"><li>\u95ee\u53f7 \u5728\u5b57\u7b26\u540e\u9762\u653e\u7f6e\u95ee\u53f7\u8868\u793a\u8be5\u5b57\u7b26\u53ef\u4ee5\u51fa\u73b00\u6b21\u6216\u80051\u6b21.<\/li><li>\u52a0\u53f7 \u5728\u5b57\u7b26\u540e\u9762\u653e\u7f6e\u52a0\u53f7\u8868\u793a\u8be5\u5b57\u7b26\u81f3\u5c11\u51fa\u73b01\u6b21\u3002<\/li><li>\u4f7f\u7528\u82b1\u62ec\u53f7<br>\u82b1\u62ec\u53f7\u4e3a\u5b57\u7b26\u6307\u5b9a\u53ef\u91cd\u590d\u6b21\u6570\uff1a<ul><li><code>a{m}<\/code>\u8868\u793aa\u9700\u8981\u51c6\u786e\u7684\u51fa\u73b0m\u6b21<\/li><li><code>a{m, n}<\/code>\u8868\u793aa\u81f3\u5c11\u51fa\u73b0m\u6b21\uff0c\u81f3\u591a\u51fa\u73b0n\u6b21<\/li><\/ul><\/li><li>\u7ba1\u9053\u7b26\u53f7<br>\u7ba1\u9053\u7b26\u53f7\u4f7f\u5f97\u5728\u68c0\u67e5\u6570\u636e\u6d41\u65f6\u53ef\u4ee5\u6307\u5b9a\u591a\u4e2a\u8981\u5339\u914d\u7684\u6b63\u5219\u8868\u8fbe\u5f0f\uff0c\u53ea\u8981\u5339\u914d\u4e86\u5176\u4e2d\u7684\u67d0\u4e00\u4e2a\u6b63\u5219\u8868\u8fbe\u5f0f\u5c31\u7b97\u5339\u914d\u3002<\/li><li>\u805a\u5408\u8868\u8fbe\u5f0f<br>\u524d\u9762\u90fd\u662f\u4ee5\u5355\u4e2a\u5b57\u7b26\u4e3a\u5355\u4f4d\uff0c\u53ef\u4ee5\u901a\u8fc7\u805a\u5408\u8868\u8fbe\u5f0f(\u5706\u62ec\u53f7)\u5c06\u4e00\u4e2a\u5355\u8bcd\u4f5c\u4e3a\u4e00\u4e2a\u5355\u4f4d\u6765\u8003\u8651\u3002<br>\u8b6c\u5982\u7528<code>(Monday)?<\/code>\u8868\u793aMonday\u51fa\u73b00\u6b21\u6216\u80051\u6b21\u3002<\/li><\/ol>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"%E4%B8%80%E4%B8%AA%E4%BD%BF%E7%94%A8%E6%AD%A3%E5%88%99%E8%A1%A8%E8%BE%BE%E5%BC%8F%E7%9A%84%E7%BB%8F%E5%85%B8%E4%BE%8B%E5%AD%90%E5%8C%B9%E9%85%8D%E7%94%B5%E5%AD%90%E9%82%AE%E4%BB%B6%E5%9C%B0%E5%9D%80\"><span class=\"ez-toc-section\" id=\"%E4%B8%80%E4%B8%AA%E4%BD%BF%E7%94%A8%E6%AD%A3%E5%88%99%E8%A1%A8%E8%BE%BE%E5%BC%8F%E7%9A%84%E7%BB%8F%E5%85%B8%E4%BE%8B%E5%AD%90%EF%BC%9A%E5%8C%B9%E9%85%8D%E7%94%B5%E5%AD%90%E9%82%AE%E4%BB%B6%E5%9C%B0%E5%9D%80\"><\/span>\u4e00\u4e2a\u4f7f\u7528\u6b63\u5219\u8868\u8fbe\u5f0f\u7684\u7ecf\u5178\u4f8b\u5b50\uff1a\u5339\u914d\u7535\u5b50\u90ae\u4ef6\u5730\u5740<span class=\"ez-toc-section-end\"><\/span><\/h2>\n\n\n\n<p>\u5176\u5b9e\u8fd9\u4e2a\u95ee\u9898\u6ca1\u4ec0\u4e48\u548c\u6b63\u5219\u8868\u8fbe\u5f0f\u76f8\u5173\u7684\u96be\u70b9\uff0c\u96be\u70b9\u5728\u4e8e\u641e\u6e05\u695a\u7535\u5b50\u90ae\u4ef6\u5730\u5740\u7684\u5177\u4f53\u89c4\u5219\u3002\u6309\u7167<a href=\"https:\/\/en.wikipedia.org\/wiki\/Email_address#Validation_and_verification\">\u7ef4\u57fa\u767e\u79d1\u7684\u8bf4\u6cd5<\/a>\u4f3c\u4e4e\u6b63\u5219\u8868\u8fbe\u5f0f\u8fd8\u5e76\u4e0d\u80fd\u591f\u6db5\u76d6\u6240\u6709\u6709\u6548\u7684\u7535\u5b50\u90ae\u4ef6\u5730\u5740\u3002<\/p>\n\n\n\n<h1 class=\"wp-block-heading\" id=\"grep\"><span class=\"ez-toc-section\" id=\"grep\"><\/span>grep<span class=\"ez-toc-section-end\"><\/span><\/h1>\n\n\n\n<ul class=\"wp-block-list\"><li>\u6309\u7167\u5355\u8bcd\u53bb\u5339\u914d<br><a href=\"https:\/\/www.hackerrank.com\/challenges\/text-processing-in-linux-the-grep-command-1\/problem\">\u627e\u51fa\u6240\u6709\u542b\u6709the\u7684\u884c<\/a><code>grep '\\&lt;the\\&gt;' <\/code>\u6216\u8005\uff1a<code>grep '\\bthe\\b' <\/code>\u8fd9\u91cc\u5176\u5b9e\u4e5f\u6709\u4e2a\u5751\uff0c\u6bd4\u5982\u6211\u4e0d\u7ecf\u610f\u5c31\u5199\u6210\u4e86\uff1a<code>grep \\&lt;the\\&gt; <\/code>\u8fd9\u79cd\u5199\u6cd5\u7684\u8bdd\u662f\u53ea\u80fd\u5339\u914d\u5230<code>&lt;the&gt;<\/code>\u8fd9\u4e2a\u5b57\u7b26\u4e32\u7684\uff0c\u800c\u4e0d\u662f\u5355\u8bcd<code>the<\/code>\u3002\u53bb\u67e5grep\u7684manual\uff0c\u53ef\u4ee5\u770b\u5230\uff1a<br><em>Typically PATTERNS should be quoted when grep is used in a shell command. Any meta-character with special meaning may be quoted by preceding it with a backslash. <\/em>\u4e3a\u4e86\u907f\u514d\u8fd9\u79cd\u9519\u8bef\u7684\u53d1\u751f\uff0c\u4ee5\u540e\u5c31\u90fd\u8bb0\u5f97\u7ed9grep\u5339\u914d\u7684pattern\u52a0\u4e0a\u5355\u5f15\u53f7\u597d\u4e86\u3002<\/li><li>\u5339\u914d\u65f6\u5ffd\u7565\u5927\u5c0f\u5199<code>grep -i<\/code><\/li><li>\u53cd\u5411\u5339\u914d<br>\u627e\u51fa\u4e0d\u5339\u914d\u7684\u884c\uff1a<code>grep -v<\/code><\/li><\/ul>\n\n\n\n<h1 class=\"wp-block-heading\" id=\"sed\"><span class=\"ez-toc-section\" id=\"sed\"><\/span>sed<span class=\"ez-toc-section-end\"><\/span><\/h1>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"%E5%8F%82%E8%80%83%E8%B5%84%E6%96%99\"><span class=\"ez-toc-section\" id=\"%E5%8F%82%E8%80%83%E8%B5%84%E6%96%99\"><\/span>\u53c2\u8003\u8d44\u6599<span class=\"ez-toc-section-end\"><\/span><\/h2>\n\n\n\n<ul class=\"wp-block-list\"><li><a href=\"http:\/\/clubmate.fi\/replace-strings-in-files-with-the-sed-bash-command\/#Replace_in_place\">\u539f\u6559\u7a0b\u5730\u5740<\/a><\/li><li><a href=\"http:\/\/www.grymoire.com\/Unix\/Sed.html#uh-0\">sed\u6559\u7a0b<\/a><\/li><li>\u628a\u6240\u6709\u7684vermin\u66ff\u6362\u4e3apony<br><code>sed 's\/vermin\/pony\/g' metamorphosis.txt &gt; ponymorphosis.txt<\/code><\/li><li>\u53ea\u66ff\u6362\u7b2c\u4e00\u4e2avermin\u4e3apony<br><code>sed 's\/vermin\/pony\/1' metamorphosis.txt &gt; ponymorphosis.txt <\/code><br>\u6216\u8005\u4e0d\u8981\u8fd9\u4e2a<code>1<\/code>\u4e5f\u53ef\u4ee5<br><code>sed 's\/vermin\/pony\/' metamorphosis.txt &gt; ponymorphosis.txt<\/code><\/li><li>\u5728\u539f\u6587\u4ef6\u4e2d\u66ff\u6362<br><code>sed -i 's\/vermin\/pony\/g' metamorphosis.txt<\/code><\/li><li>\u66ff\u6362\u7684\u65f6\u5019\u5ffd\u7565\u5927\u5c0f\u5199<br>\u7528<code>i<\/code>\u8868\u793a\u5ffd\u7565\u5927\u5c0f\u5199\uff1a<code>sed -e 's\/thy\/{&amp;}\/gi'<\/code><\/li><li>\u6309\u7167\u5355\u8bcd\u8fdb\u884c\u5339\u914d<br>\u628a\u5355\u8bcd<code>the<\/code>\u66ff\u6362\u4e3a<code>this<\/code>\uff1a<code>sed -e 's\/\\&lt;the\\&gt;\/this\/' \\&lt;<\/code>\u548c<code>\\&gt;<\/code>\u5206\u522b\u8868\u793a\u5355\u8bcd(word)\u7684\u5f00\u59cb\u548c\u7ed3\u675f\uff0c\u548cvim\u91cc\u9762\u7684\u8bed\u6cd5\u5c45\u7136\u662f\u4e00\u6837\u7684\u3002\u4e5f\u53ef\u4ee5\u4f7f\u7528<code>\\b<\/code>\u6765\u8868\u793a\u5355\u8bcd\u7684\u8fb9\u754c\uff1a<code>sed -e 's\/\\bthe\\b\/this\/'<\/code><\/li><li>\u5f15\u7528\u5339\u914d\u5230\u7684pattern<br><code>sed -e 's\/vermin\/{&amp;}\/g' metamorphosis.txt <\/code><br>\u8fd9\u4f1a\u628a\u6240\u6709\u7684<code>vermin<\/code>\u66ff\u6362\u4e3a<code>{vermin}<\/code>\u3002<\/li><li>\u5173\u4e8egroup\u548cback references\u53c2\u8003<a href=\"https:\/\/www.hackerrank.com\/challenges\/sed-command-5\/problem\">\u8fd9\u9053\u9898\u76ee<\/a>\uff0c\u628a\u4fe1\u7528\u5361\u4e0a\u9762\u7684\u51e0\u7ec4\u6570\u5b57\u9006\u5e8f\u6392\u5217\uff1a<br><code>sed -e 's\/\\(\\d\\+\\) \\(\\d\\+\\) \\(\\d\\+\\) \\(\\d\\+\\)\/\\4 \\3 \\2 \\1\/' <\/code><br>\u5176\u5b9e\u5c31\u662f\u7528<code>\\(\\)<\/code>\u53bb\u6355\u83b7pattern\uff0c\u7136\u540e\u518d\u7528<code>\\1<\/code>\u3001<code>\\2<\/code>\u8fd9\u79cd\u53bb\u5f15\u7528\u6355\u83b7\u7684pattern\u5c31\u53ef\u4ee5\u4e86\u3002<\/li><\/ul>\n\n\n\n<h1 class=\"wp-block-heading\" id=\"paste\"><span class=\"ez-toc-section\" id=\"paste\"><\/span><a href=\"https:\/\/www.theunixschool.com\/2012\/07\/10-examples-of-paste-command-usage-in.html\">paste<\/a><span class=\"ez-toc-section-end\"><\/span><\/h1>\n\n\n\n<p>paste\u547d\u4ee4\u53ef\u4ee5\u628a\u591a\u4e2a\u6587\u672c\u6587\u4ef6\u7684\u5185\u5bb9\u6309\u884c\u7ed9\u8fde\u63a5\u8d77\u6765\uff0c\u7528tab\u5206\u5272\u3002<\/p>\n\n\n\n<ul class=\"wp-block-list\"><li><code>paste -s<\/code><br>\u9010\u4e00\u5730\u628a\u6bcf\u4e2a\u6587\u4ef6\u7684\u6bcf\u4e00\u884c\u7528tab\u8fde\u8d77\u6765\uff0c\u800c\u4e0d\u662f\u6309\u7167\u9ed8\u8ba4\u7684\u6bcf\u4e2a\u6587\u4ef6\u53d6\u4e00\u884c\u7684\u65b9\u5f0f\u3002<\/li><li><code>paste -d ';'<\/code><br>\u7528\u5206\u53f7\u4f5c\u4e3a\u5206\u5272\u7b26\u800c\u4e0d\u662f\u9ed8\u8ba4\u7684TAB\u3002<\/li><li><code>paste -d ' ' - - -<\/code><br>\u7528paste\u547d\u4ee4\u628a\u4e00\u4e2a\u6307\u5b9a\u6587\u4ef6\u7684\u5185\u5bb9\u6bcf\u4e09\u884c\u5408\u5e76\u6210\u4e00\u884c\uff0c\u5408\u5e76\u7684\u65f6\u5019\u8fd9\u4e09\u884c\u7528\u5206\u53f7\u5206\u5272\u5f00\u3002\u901a\u8fc7\u8fd9\u4e2a\u547d\u4ee4\u53ef\u4ee5\u5bf9<code>-<\/code>\u7684\u7528\u6cd5\u6709\u66f4\u6e05\u6670\u7684\u8ba4\u8bc6\uff1a&nbsp;<code>-<\/code>\u4ee3\u8868\u4e86\u4ece\u6807\u51c6\u8f93\u5165\u4e2d\u8bfb\u53d6\u4e00\u884c\u3002<\/li><\/ul>\n\n\n\n<h1 class=\"wp-block-heading\" id=\"awk\"><span class=\"ez-toc-section\" id=\"awk\"><\/span>awk<span class=\"ez-toc-section-end\"><\/span><\/h1>\n\n\n\n<p><a href=\"https:\/\/www.thegeekstuff.com\/2010\/02\/awk-conditional-statements\/\">\u53c2\u8003\u6559\u7a0b<\/a><\/p>\n\n\n\n<ul class=\"wp-block-list\"><li>\u83b7\u53d6\u5217\u7684\u4e2a\u6570<br>\u5f15\u7528\u53d8\u91cf<strong>NF<\/strong>\u5c31\u53ef\u4ee5\u4e86\uff1a<br><code>awk '{if (NF &lt; 4){print \"Not all scores are available for \"$1}}'<\/code><\/li><li>\u6839\u636e\u4e0d\u540c\u7684\u60c5\u51b5\u6267\u884c\u4e0d\u540c\u7684action<br><a href=\"https:\/\/www.hackerrank.com\/challenges\/awk-2\/problem\">\u5224\u65ad\u5b66\u751f\u662f\u5426\u901a\u8fc7\u8003\u8bd5<\/a><br><code>awk '{if ($2 >= 50 &amp;&amp; $3 >= 50 &amp;&amp; $4 >= 50) print $1 \" : Pass\"; else print $1 \" : Fail\"}' <\/code><br>\u6ce8\u610f\u8bed\u53e5\u662f\u8981\u7528\u5206\u53f7\u7ed3\u5c3e\u7684\u3002<br><a href=\"https:\/\/www.hackerrank.com\/challenges\/awk-3\/problem\">\u66f4\u590d\u6742\u4e00\u70b9\u7684\u4f8b\u5b50<\/a>\uff1a<br><code>awk '{ total=$2+$3+$4; avg=total\/3; if (avg >= 80) grade = \"A\"; else if (avg >= 60) grade = \"B\"; else if (avg >= 50) grade = \"C\"; else grade = \"FAIL\"; print $0 \" : \" grade}' <\/code><br>\u8fd9\u91cc\u7528<code>$0<\/code>\u6765\u8868\u793a\u8f93\u5165\u7684\u6bcf\u4e00\u884c\u3002<\/li><li><a href=\"https:\/\/www.hackerrank.com\/challenges\/awk-4\/problem\">\u7528awk\u628a\u6587\u4ef6\u91cc\u7684\u6bcf\u4e24\u884c\u7ed9\u8fde\u8d77\u6765\uff0c\u5206\u5272\u7b26\u7528<code>;<\/code><\/a><br><code>awk 'ORS=NR%2?\";\":\"\\n\"'<\/code><\/li><\/ul>\n","protected":false},"excerpt":{"rendered":"<p>shell\u4e2d\u7684\u6b63\u5219\u8868\u8fbe\u5f0f \u6b63\u5219\u8868\u8fbe\u5f0f\u5f15\u64ce \u6b63\u5219\u8868\u8fbe\u5f0f\u662f\u7528\u6b63\u5219\u8868\u8fbe\u5f0f\u5f15\u64ce(regular expression engine)\u5b9e\u73b0\u7684\u3002\u6b63\u5219\u8868\u8fbe\u5f0f\u662f\u89e3\u91ca\u6b63\u5219\u8868\u8fbe\u5f0f\u6a21\u5f0f\u5e76\u4f7f\u7528\u8fd9\u4e9b\u6a21\u5f0f\u8fdb\u884c\u6587\u672c\u5339\u914d\u7684\u5e95\u5c42\u8f6f\u4ef6\u3002&#46;&#46;&#46;<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[10],"tags":[70],"class_list":["post-706","post","type-post","status-publish","format-standard","hentry","category-10","tag-bash"],"_links":{"self":[{"href":"https:\/\/blog.cauchyschwarz.com\/index.php?rest_route=\/wp\/v2\/posts\/706","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/blog.cauchyschwarz.com\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/blog.cauchyschwarz.com\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/blog.cauchyschwarz.com\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/blog.cauchyschwarz.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=706"}],"version-history":[{"count":2,"href":"https:\/\/blog.cauchyschwarz.com\/index.php?rest_route=\/wp\/v2\/posts\/706\/revisions"}],"predecessor-version":[{"id":708,"href":"https:\/\/blog.cauchyschwarz.com\/index.php?rest_route=\/wp\/v2\/posts\/706\/revisions\/708"}],"wp:attachment":[{"href":"https:\/\/blog.cauchyschwarz.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=706"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/blog.cauchyschwarz.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=706"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/blog.cauchyschwarz.com\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=706"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}