首页 > 其他分享 >[20230825]dc命令复杂学习.txt

[20230825]dc命令复杂学习.txt

时间:2023-08-25 21:25:29浏览次数:45  
标签:-- 20230825 dc cat 堆栈 txt stack

[20230825]dc命令复杂学习.txt

--//前几天学习dc使用,我当时最后举了一个累加的例子,里面
--//-e后面那一串什么意思,即使看了man dc文档,我当时也没看懂表示什么意思.尝试看了man文档,简单解析如下:
--//我从文档里面取出相关说明:

[characters]
Makes a string containing characters (contained between balanced [ and ] characters), and pushes it on the stack.For
example, [foo]P prints the characters foo (with no newline).
生成一个包含字符的字符串(包含在平衡的[和]字符之间),并将其推到堆栈上。例如,[foo]P打印字符文件(没有换行符)。

sr

Pop the value off the top of the stack and store it into register r.
推出顶端的堆栈值进入内存寄存器,保存到寄存器r。

z

Pushes the current stack depth: the number of objects on the stack before the execution of the z command.
推动当前堆栈深度:在执行z命令之前,堆栈上的对象数。

>r

Pops two values off the stack and compares them assuming they are numbers, executing the contents of register r as a
macro if the original top-of-stack is greater. Thus, 1 2>a will invoke register a's contents and 2 1>a will not.
从堆栈中弹出两个值,并比较它们,假设它们是数字,执行寄存器r的内容作为一个宏,如果原始的堆栈顶部更大。因此,1 2>a 将调用
注册a的内容,而 2 1>a将不会。
--//主要为了下面<r的解析.

<r

Similar but invokes the macro if the original top-of-stack is less.
类似的方法,但如果原始的堆栈顶部较少,则调用宏。

p

Prints the value on the top of the stack, without altering the stack. A newline is printed after the value.
在堆栈的顶部打印该值,而不更改堆栈。在该值后将打印一个换行符。

f

Prints the entire contents of the stack without altering anything. This is a good command to use if you are lost or want
to figure out what the effect of some command has been.
打印堆栈的全部内容,而不改变任何内容。如果您丢失或想要使用这个命令,这是一个很好的命令来弄清楚一些命令的效果。

--//这样累加例子的脚本解析如下,要有点耐心还是很容易读懂的:
$ cat a.txt
1111
2222
3333
4444

$ cat a.txt | dc -f - -e "[+z1<r]srz1<rp"
11110

--//解析如下:
1111
2222
3333
4444
[+z1<r]
--//将上面文件a.txt的内容以及[+z1<r] 压入堆栈.

sr   -> 保存字符串 +z1<r 到寄存器r,并且出栈.
z    -> 指当前堆栈的数量.并将它推入堆栈.
1<r  -> 如果1<(堆栈的数量),调用宏r.也就是执行+z1<r,也就是先相加 ,剩下的只要1<(堆栈的数量)不断的调用r.

--//我修改如下,加入f命令显示堆栈内容,就很清晰了.
$ cat a.txt | dc -f - -e "[+z1f<r]fsrz1f<rp"
+z1f<r
4444
3333
2222
1111
--//第1次执行f显示堆栈的情况.+z1f<r 作为字符串最后压入堆栈. 相当于执行fsrz1f<rp里面的f命令.
1
4
4444
3333
2222
1111
--//执行srz1f<r,sr保存字符串 +z1f<r 保存到寄存器r,并且字符串出栈.z 指当前堆栈的数量4(因为字符串已经出栈).并将它推入堆栈.
--//1 推入堆栈
--//第2次执行f 显示堆栈的情况(如上). <r 1<4为真,调用寄存器r的内容.也就是执行 +z1f<r.只要1<当前堆栈的数量,调用寄存器r的内容.
1
3
7777
2222
1111
--//第3次执行f显示堆栈的情况.
1
2
9999
1111
--//第4次执行f显示堆栈的情况.
1
1
11110
--//第5次执行f显示堆栈的情况. 1<1 为假,不再调用宏r.
11110
--//第6次执行p输出结果.

--//也可以这样执行:
$ cat a.txt | dc -e "[+z1f<r]sr" -f - -e "z1f<rp"
1
4
4444
3333
2222
1111
1
3
7777
2222
1111
1
2
9999
1111
1
1
11110
11110

$ cat a.txt | dc -e "[+z1<r]sr" -f - -e "z1<rp"
11110

总结:
--//也就是静下心来,还是很容易理解的.

标签:--,20230825,dc,cat,堆栈,txt,stack
From: https://www.cnblogs.com/lfree/p/17657979.html

相关文章

  • 20230825巴蜀暑期集训测试总结
    T1考场竟然没有想到单调栈!后面看题解一看到栈就顿悟了。考场打的时\(O(n\log^2n)\)倍增,挂掉了,区间求重复了。还T了一些点,应该是常数比较大。倍增在求答案的时候其实是可以做到\(O(\logn)\)的,但是我“执意”要求GCD,时间就炸掉了。GCD,LCM和倍数因数关系如果想成与乘除法......
  • Android零基础入门 | 广播机制 Broadcast
    Android应用可以通过广播从系统或其他App接收或发送消息。类似于订阅-发布设计模式。当某些事件发生时,可以发出广播。系统在某些状态改变时会发出广播,例如开机、充电。App也可发送自定义广播。广播可用于应用间的通讯,是IPC的一种方式。广播的种类广播的种类也可以看成是广播的属性......
  • AP6315 DC单节锂电池充电IC 同步2A锂电芯片
    概述是一款面向5V交流适配器的2A锂离子电池充电器。它是采用1.5MHz固定频率的同步降压型转换器,因此具有高达90%以上的充电效率,自身发热量极小。包括完整的充电终止电路、自动再充电和一个达±1%的4.2V预设充电电压,内部集成了防反灌保护、输出短路保护、芯片及电池温度保护等多种功......
  • BOSHIDA DC电源模块在工业自动化中的应用
    BOSHIDADC电源模块在工业自动化中的应用随着工业自动化的快速发展,电子技术的不断进步,DC电源模块已经成为了工业自动化领域中的重要组成部分之一。DC电源模块广泛应用于各种自动化设备中,如PLC、DCS、机器人、变频器等。本文将从以下几个方面详细介绍DC电源模块在工业自动化中的应......
  • STDC网络
    为了做到实时推理,很多实时语义分割模型选用轻量骨干网络,但是由于task-specificdesign的不足,这些从分类任务中借鉴来的轻量级骨干网络可能并不适合解决分割问题。除了选用轻量backbone,限制输入图像的大小是另一种提高推理速度的常用方法,但这很容易忽略边缘附近的细节和小物体。为......
  • 车灯LED高性能双通道输出DC-DC降压恒流芯片AP2813
    产品叙述 AP2813是深圳市世微半导体有限公司推出的一款双路降压恒流驱动器,高效率、外围简单、内置功率管,适用于5-80V输入的高精度降压LED恒流驱动芯片。内置功率管输出最大功率可达12W,最大电流1.2A。AP2813一路直亮,另外一路通过MODE1切换全亮,爆闪。AP2813工作频率固......
  • [20230823]dc命令简单学习.txt
    [20230823]dc命令简单学习.txt--//dc作为命令行计算器自己很少使用,找机会学习一下.--//dc对比bc作为计算器最大的不同的地方是采用ReversePolishNotation(RPN).又叫逆波兰表示法,简单一点就是运算符号在最后--//,取消了复杂的括号等优先级问题.简化复杂运算.$dc--helpUs......
  • 【230823-3】▲ABC中,∠ABC=90°,AB=4,BC=3,点D在线段AC上,若角BDC=45°,则BD=?,Cos∠ABD=?
    ......
  • [20230809]ora-04030问题分析整理.txt
    [20230809]ora-04030问题分析整理.txt--//生产系统同事使用toad连接经常出现ora-04030错误。ORA-04030:outofprocessmemorywhentryingtoallocate123416bytes(QERHJhash-joi,kllcqas:kllsltba)--//仔细看joi确实不是join,开始猜测可能某个程序的sql语句选择hash-join,......
  • Sigma-Delta ADC 简介
    本文转自:什么是Sigma-DeltaADC(linkchip.cn) Sigma-DeltaADC是一种目前使用最为普遍的高精度ADC结构,在精度达到20位以上的场合,Sigma-Delta是必选的结构。通过采用过采样、噪声整形以及数字滤波技术,降低对模拟电路的设计要求,实现了其他类型的ADC无法达到的高精度和低功耗。通......