2020-11-09 信息扩充原理多次自动运行awk sed
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命令要求的样子,不能改。