[英]Understanding sed command
如果問題太天真,請原諒。 我是shell腳本的新手,我無法找到任何有用的資源來理解細節。 我試圖理解遺留腳本。 請有人告訴我以下命令的作用:
sed "s#s3AtlasExtractName#$i#g" load_xyz.sql >> load_abc.sql;
sed是一個命令行流編輯器。 您可以在此處找到有關它的信息: http : //www.computerhope.com/unix/used.htm
下面顯示了一個簡單的示例,其中sed用於將單詞“test”替換為myfile.txt中的單詞“example”,但輸出發送到newfile.txt
sed's / test / example / g'myfile.txt> newfile.txt
看來你的腳本通過替換load_xyz.sql文件的內容並將其存儲在新文件load_abc.sql中來執行類似的功能。如果沒有更多的代碼,我只是猜測但似乎參數$ i可以用作計數器在load_abc.sql文件中插入類似但新的值。
簡而言之,它讀取load_xyz.sql並用shell變量“i”中存儲的任何內容替換每次出現的“s3AtlasExtractName”。
長版本是sed接受許多具有不同格式的子命令。 任何“簡單”的sed命令看起來都像'sed'。 子命令的第一個字母告訴您sed將對您的文件執行哪個操作。
“s”操作代表“替代”並且是最常用的。 接下來是類似Perl的正則表達式:分隔符,要查找的正則表達式,分隔符,要替換的值,分隔符,PREG標志。 在你的情況下,分隔符是'#',這是非常不尋常但不被禁止的,所以命令將'$ i'替換為's3AtlasExtractName'的每個實例。 'g'PREG標志告訴sed替換模式的每次出現(默認是僅替換輸入中每一行的第一次出現)。
最后,在雙引號分隔的字符串中使用“$ i”告訴shell實際擴展shell變量'i',這樣你就可以尋找一個shell語句設置(可能是'for'語句) 。
希望這可以幫助。
編輯:我專注於'sed'部分,有點錯過了重定向部分。 '>>'標記告訴shell獲取sed命令的輸出(即load_xyz.sql的內容,所有出現的s3AtlasExtractName都被$ i的內容替換)並將其附加到文件'load_abc.sql'。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.