我可以将长链sed命令组合成更短的东西吗?
问题描述:
我成功地写了一条很适合我使用的长行。 它得到一个文件,并将文本格式化为我想要的。我可以将长链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
答
您可以编写一个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使其永久保存在您的用户帐户中。
答
你想要这个我觉得:
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
在* *至少给我们可读格式的礼貌。 –
(“可读格式”,我不是说反引号 - 我的意思是换行和缩进)。 –
所以,首先 - 你意识到你可以给'sed'多个命令,对吧? –