2020-11-09 信息扩充原理多次自动运行awk sed

2020-11-09  本文已影响0人  linuxScripter

seq101 100 2001 | xargs -i bash -c "sed 's/^/{} /g' <(seq 52 -11)"  |  awk '{ print("cat zCompute_withQuanti.c| sed '\''s/1001/"$1"/g'\'' | sed '\''s/= 52/="$2"/g'\''> tmp.c;  gcc tmp.c; catzzHJBComputing.cmd.benji  | sed'\''s/1001/"$1"/g'\'' > tmp.cmd; chmod +x tmp.cmd; ./tmp.cmd;cp  resultAll_benji  resultAll_benji.grid"$1".weishu"$2".times200");}' \

  > tmp1

chmod+x tmp1

./tmp1

窍门:要从变化入手,不要企图一下子掌握所有。

seq 101 100 2001  | xargs -i bash -c "

sed 's/^/{} /g' <(seq 52 -1 1)"

到这里为止,做的事情是一个全交叉,信息扩充:

z@z-ThinkPad-T400:~/zworkT400/zHJB/dockerImple$ seq 101 100 301  | xargs -i bash -c " sed 's/^/{} /g' <(seq 3)"

101 1

101 2

101 3

201 1

201 2

201 3

301 1

301 2

301 3 就是两组数,每个和每个放在一行,全组合一下。 给下一级,awk这个命令。

  |  awk '{ print("cat zCompute_withQuanti.c | sed '\''s/1001/"$1"/g'\'' | sed '\''s/= 52/="$2"/g'\'' > tmp.c; 

gcc tmp.c;

cat zzHJBComputing.cmd.benji  | sed '\''s/1001/"$1"/g'\'' > tmp.cmd;

chmod +x tmp.cmd;

./tmp.cmd;

cp  resultAll_benji  resultAll_benji.grid"$1".weishu"$2".times200");

}'

\  续行符号

  > tmp1  把awk的结果,放入一个文件tmp1中

chmod +x tmp1  把它变成可执行的。

./tmp1  执行。

tmp1文件的样子,就是:

cat zCompute_withQuanti.c|sed

's/1001/2001/g'|sed

's/= 52/=2/g' > tmp.c; 

gcc tmp.c;

cat zzHJBComputing.cmd.benji  |sed 's/1001/2001/g'> tmp.cmd; chmod +xtmp.cmd; ./tmp.cmd;

cp  resultAll_benji  resultAll_benji.grid2001.weishu2.times200

cat zCompute_withQuanti.c | sed 's/1001/2001/g' | sed 's/= 52/=1/g' >tmp.c;  gcc tmp.c; cat zzHJBComputing.cmd.benji  | sed 's/1001/2001/g' > tmp.cmd; chmod +xtmp.cmd; ./tmp.cmd; cp resultAll_benji resultAll_benji.grid2001.weishu1.times200

对比后,可以发现 所有细节的 不同之处:

这些细节,是发现出来的,自己发现的,才有乐趣,不然很没有乐趣!!!

'\''不同!

1001/"$1"和1001/2001不同!

grid"$1".weishu"$2".times200和grid2001.weishu2.times200不同!

因为:在单引号'里面的时候,如果又出现了单引号',而它不是我想结束的那个配对儿的单引号'的时候,就要用'\''表示没结束。

因为$1是我们的参数,就要变的那个值,从201、301、401。。。到2001

因为$2是我们的参数,是第二个要变的量,从52到1.

"$1"中的双引号,是awk命令要求的样子,不能改。

上一篇下一篇

猜你喜欢

热点阅读