2017-09-24 39 views
0

我成功地寫了一條很適合我使用的長行。 它得到一個文件,並將文本格式化爲我想要的。我可以將長鏈sed命令組合成更短的東西嗎?

是否可以縮短?

wget http://user:[email protected]/details.cgx \ 
    && sed "s/value/\n/g" details.cgx >> step1 \ 
    && sed "s/text/</g" step1 >> step2 \ 
    && sed "s/id/</g" step2 >> step3 \ 
    && tr -d '<>/' <step3>> step4 \ 
    && sed "s/formFanLevel/FanLevel/g" step4 >> step5 \ 
    && sed '123,155d' step5 >> step6 \ 
    && sed '79,120d' step6 >> step7 \ 
    && sed '57,66d' step7 >> step8 \ 
    && sed '47,48d' step8 >> step9 \ 
    && sed '37,44d' step9 >> step10 \ 
    && sed '13,26d' step10 >> VMCDF.txt \ 
    && rm step* && rm details.cgx 
+0

在* *至少給我們可讀格式的禮貌。 –

+0

(「可讀格式」,我不是說反引號 - 我的意思是換行和縮進)。 –

+0

所以,首先 - 你意識到你可以給'sed'多個命令,對吧? –

回答

0

一個良好的開端將是學習pipe command (|)如何可以用來輸出從一個程序通過輸入下一個 - 這將消除需要創造,參考並清理所有的中間文件( step1 .. step10)從您的命令行。

0

您可以編寫一個shell腳本,該腳本可以將相同的命令鏈應用於任何文件,然後使用該腳本而不是輸入所有這些行。

如果,雖然不太可能,你總是使用相同的文件,只是做一個別名給予一個名稱命令鏈,例如:

alias wgetsed='wget http://user:[email protected]/details.cgx \ 
    && sed "s/value/\n/g" details.cgx >> step1 \ 
    && sed "s/text/</g" step1 >> step2 \ 
    ... 
    && rm step* && rm details.cgx' 

然後添加上述到〜/代碼。 bash_rc使其永久保存在您的用戶帳戶中。

1

你想要這個我覺得

wget -O- http://user:[email protected]/details.cgx | sed -E ' 
    s/value/\n/g 
    s/text|id/</g 
    s,<>/,,g 
    s/form(FanLevel)/\1/g 
' | sed ' 
    13,26d 
    37,44d 
    47,48d 
    57,66d 
    79,120d 
    123,155d 
' > VMCDF.txt 
相關問題