我成功地写了一条很适合我使用的长线。 它得到一个文件,并将文本格式化为我想要的。
可以缩短它吗?
wget http://user:password@192.168.1.100/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 :(得分:1)
我想你想要这个:
wget -O- http://user:password@192.168.1.100/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
答案 1 :(得分:0)
一个好的开始是学习如何使用pipe command (|)将输出从一个程序作为输入传递给下一个 - 这将消除创建,引用和清理所有中间文件的需要(步骤1 ..步骤10)从您的命令行。
答案 2 :(得分:0)
您可以编写一个可以将同一命令链应用于任何文件的shell脚本,然后使用该脚本而不是键入所有这些行。
如果虽然不太可能,但您总是使用相同的文件,只需为命令链指定一个别名,例如:
alias wgetsed='wget http://user:password@192.168.1.100/details.cgx \
&& sed "s/value/\n/g" details.cgx >> step1 \
&& sed "s/text/</g" step1 >> step2 \
...
&& rm step* && rm details.cgx'
然后,您将上面的代码添加到〜/ .bash_rc,以使其成为您的用户帐户的永久代码。