AWK高级编程 转载

AWK高级编程 转载

转载自:http://blog.csdn.net/wzhwho/article/details/5513791

 

1. 程序元素

一个awk 程序是一对以模式(pattern) 与大括号框起来的操作(action) 组合而成的,或许,还会加上实现操作细节的函数(function ) 。针对每个匹配于输人数据的模式,操作会被执行,且所有模式都会针对每条输人记录而检查。模式或操作可省略其中一个。如果模式省略,则操作将被应用到每条输人记录; 如果操作省略,则默认操作为打印匹配之记录在标准输出上。以下是传统awk 程序的配置:

pattern  {action} 如模式匹配,则执行操作

pattern  {action} 如模式匹配,则打印记录

虽然,模式多半是数字或字符串表达式,不过awk 以保留字BEGIN 与END 提供两种特殊模式。

与BEGIN 关联的操作只会执行一次,在任何命令行文件或一般命令行赋值被处理之前,但是在任何开头的一V 选项指定已经完成之后。

END 操作也是只执行一次,用于所有输入数据已被处理完之后。它多半用于产生摘要报告,或是执行清除操作。

BEGIN 与END 模式可以是任意顺序,可以存在于awk 程序内的任何位置。不过,为了方便,我们通常将BEGIN 模式放在程序的第一个位置,而将END 模式放在最后。

2. 注释与空白

awk 里的注释是从# 开始到该行结束,就像在Shell 里那样。空行等同于空的注释。

3. 字符串与字符串表达式

awk 字符串包含零至多个字符,且在字符串的长度上没有限制,视可用内存而定。

字符串的比较,用的是传统的关系运算符:==( 相等) 、!=( 不等) 、<( 小于) 、<=( 小于等于) 、>( 大于) ,以及>=( 大于等于》。比较后返回l 为真,0 为假。比较不同长度的字符串,且其中一个字符串为另一个的初始子字符串时,较短的会定义为小于较长的那个,因此,“A ”< “AA ”的值为真。

awk 并无特殊的字符串接续运算符。也就是说,两个连续字符串,会自动地连接在一起。以下每一组赋值设置标量变量。为相同的具有四个字符的字符串:

s = “ABCD ”

s = “AB ”“CD ”

s = “A ”“B ”“CD ”

s = “A ”“B ”“C ”“D ”

字符串不需要是常数,如果我们继续上述的赋值:

t= s s s

则t 的值为“ABCDABCDABCD “。.

 

将数字转换为字符串,通过数字连接空字符串即可

n =123 ,

接着是:

s = ““ n ,把值“123 ”赋给s 。

 

awk 功能强大的地方大多来自于它对正则表达式的支持。有两个运算符:~( 匹配) 与!~( 不匹配) 让awk 更容易使用正则表达式:”ABC ”~ ”^[A-Z]+$ “,结果为真。

4. 数值与数值表达式

所有awk 里的数字,都以双精确度的浮点值表示。浮点数可以包含一个末端以字母e( 或E) 所表示的10 次方指数以及可选地带正负号的一个整数。举例来说:0.03125, 3.125e-2, 3125e-5 与0.003125E1 ,同样都是表示1/32 。因为awk 里所有算术都是浮点算术。

awk 并没有提供字符串转数字的函数,不过awk 的做法很简单:只要加个零到字符串里,例如:s="123" ,接着是n=0+s ,便将数字123 赋值给n 了。

5. awk 的数值运算符

表9 一:awk 的数值运算符( 优先级由大到小排列)

运算符                   说明

  ++ --                    增加与减少( 前置或后置)^ **                     指数( 右结合性)! + -                     非、一元(unary) 加号、一元减号* / %                    乘、除、余数+ -                      加、减< <= == != > >=           比较&&                         逻辑AND( 简写)||                        逻辑OR( 简写)?:                        三元条件式= += -= *= /= %= ^= **=      赋值( 右结合性)

 

6. 标量变量

保存单一值的变量叫做标量变量。

a wk 的变量名称必须以ACSII 字母或下划线开始,然后选择性地接上字母、下划线及字。因此,变量名称要匹配正则表达式[A-Za-z-][A-Za-z_0-9]* 。变量名称在实际上并没有长度的限制。awk 的变量名称是与大小写有关的:foo, Fo 。与FOO 是完全不同的三个名称。一般使用上以及建议用法是: 养成习惯,将局部变量全设为小写、全局变量第一个字母为大写,而内建变量则全是大写。

 

7. 数组变量

awk 允许在数组名称之后,以方括号将任意数字或字符串表达式 括起来作为索引。例如:

telephone["Alice"]= “555-0134"

telephone["Bob"]= “555-0135"

telephone["Carol”]= “555-0136"telephone["Don"]= “555-0141"

 

以任意值为索引的数组,称之为关联数组,因为它们的名称与值是相关联的。重要的是,awk 将其应用于数组中,允许查找( find ) 、插入(insert ) 以及删除( remove) 等操作,在一定的时间内完成,与存储多少项目无关。

一个变量不能同时用作标量变量和数组变量。当你应用delet 。语句删除数组的元素

(element] 的时候,不会删除它的名称。因此。像这样的代码:

x[1]=3

delete x

x=789

会引发awk 发出提示,告诉你不可以给数组名称赋值.

8. 命令行参数

awk 通过内建变量ARGC( 参数计数) 与ARGV( 参数向量,或参数值) ,让命令行参数

可用。下面简短的程序说明其用法;

[root@local~]#cat showargs.awkBEGIN{print ”ARGC= ”,ARGCfor (k=0;k<ARGC; k++)print "ARGV[”k”]=[”ARGV[k] “

}

 

再来看看将它用在一般awk 命令行上,会产生什么样的结果:

[root@local~]# awk -v One=1 -v Two=2 -f showargs.awk Three=3 file1 Four=4 filet2 file3ARGC=6ARGV[0]=[awk]ARGV[1]=[Three=3]ARGV[2]=[file1]ARGV[3]=[Four=4]ARGV[4]=[file2]ARGV[5]=[file3]

 

9. 环境变量

awk 提供访问内建数组ENV 工RON 中所有的环境变量:

[root@local~]#awk 'BEGIN {print ENVIRON["HOME"];print ENVIRON["USER]} ‘/home/Joneshones

 

通常你应将ENVIRON 看成是一个只读数组。

10. 模式

模式由字符串与 / 或数值表达式构建而成。常用的模式如下:

NF==0    选定空记录

NF>3     选定拥有三个字段以上的记录

NR<5    选定第 1 到第 4 条记录

(FNR==3)&&(FILENAME~/[.] [ch]$/) 来源于 C 源文件中选定记录 3

$1~/Jones/   选定字段 1 里有 . ” jones “的记录

/[Xx][Mm][Ll]/ 选定含有‘ 'XML' 。的记录,并忽略大小写差异

$0~/[Xx][Mm][Ll]/ 同上

11. 操作

以最简单的形式来说,纯print 意指在标准输出上,打印当前的输入记录($0) ,接着是输出记录分隔字符)ORS 的值,默认为单一换行字符。因此,下面这些程序所做的全是相同的操作:

1    模式为真,默认操作为打印

NR>0 {print} 有记录时打印( 恒为真)

1    {print}  模式为真。则打印,这是默认值

{print}  无模式则视为真,明确的打印,这是默认值

{print $0}  相同,但打印明确的值

下面的例子已经是完整的awk 程序。在每一个中,我们都只显示前三个输入字段,并通过省略选定模式,选定所有的记录。awk 程序语句以分号分隔,而且我们会使用些略微不同的操作代码,以修改输出字段分隔字符:

[root@local~]#echo ‘one two three four'| awk ‘{print $1,$2,$3}’

one two three[root@local~]#echo ‘one two three four'| awk ‘{OFS=”…”;print $1,$2,$3}’

one…two…three[root@local~]#echo ‘one two three four'| awk ‘{OFS=”/n”;print $1,$2,$3}’

onetwothree

 

 

改变输出字段分隔字符而没有指定任何字段,不会改变$0:

[root@local~]#echo ‘one two three four'| awk ‘{OFS=”/n”;print $0}’

one two three four

 

不过,如果我们更改输出字段分隔字符,并指定至少一个字段( 即使我们未变更其值) ,

强制以新的字段分隔字符重新组合记录,则结果为:

[root@local~]#echo ‘one two three four'| awk ‘{OFS=”/n”;$1=$1;print $0}’

onetwothreefour

 

 

12. 在awk 中的单行程序

1.UNIX 单词计数程序wc;

[root@local~]#awk ‘{C+=length($0)+1;w+=NF} END {print NR, W, C}’

 

 

2. 撇开NUL 字符问题,awk 其实可以轻松取代cat ,下面这两个例子会产生相同输出:

[root@local~]# cat*.xml[root@local~]# awk 1*.xml

 

 

3. 要将原始数据值及它们的对数打印为单栏的数据文件,可使用:

[root@local~]# awk ‘{print $1, log($1)}’file(s)

 

 

4. 在以空白分隔字段的表格中,报告第n 栏的和:

[root@local~]# awk -v COLUMN=n ‘{sum+=$COLUMN} END {print sum} ’file (s)

 

 

5. 微调上述报告,产生字段n 的平均值:

[root@local~]# awk -v COLUMN=n ‘{sum+=$COLUMN} END {print sum/NR } ’file (s)

 

6. 针对花费文件( 其记录包含描述与金额于最后一个字段) ,打印花费总数。可使用内建变量NF 计算总值:

[root@local~]# awk’{sum+=$NF; print $0, sum}’files)

 

 

7. 这里是三种查找文件内文本的方式:

[root@local~]#egrep ‘pattern|pattern’ file (s)[root@local~]#awk ‘/pattern|pattern/’file (s)[root@local~]#awk ‘/pattern}pattern/ {print FILENAME ”: ”FNR ”: ”$0} ’file(s)

 

 

8. 如果你要限制仅查找100 一150 行,可以通过两个工具程序,再搭配管道,不过这么做会漏掉位置信息:

[root@local~]#sed -n -e 100,150p -s file(s) | egrep 'pattern'

 

使用GNU sed 要搭配-s 选项,才能为每个文件重新开始行编号。另外,你也可以通过awk ,使用比较花哨的模式来做:

[root@local~]#awk ‘(100<=FNR) && (FNR <= 150) && /pattern//
{print FILENAME ”:” FNR ”:”$0}’file(s)

 

9. 要在一个四栏表格里,调换第二与第三栏,假设它们是以制表字符分隔,那么可以

使用下面三种方式的其中一种:

[root@local~]#awk -F'/t’-v OFS='/t’{print $1, $3, $2, $4}’old > new[root@local~]#awk ‘BEGIN{FS=OFS="/t"}{print $1, $3 ,$2 ,$4} ’old>new[root@local~]#awk –F ‘/t’{print $1"/t" $3"/t" $2"/t" $4}’old>new

 

 

10. 要将各栏分隔字符由制表字符( 在此以·显示) 转换成& ,可在以下两种方式择一:

[root@local~]#sed -e 's/ ·/&/g' file(s)[root@local~]#awk ‘{BEGIN{FS="/t";OFS= “& ”}{$1=$1; print} ’file(s)

 

 

11. 下面这两个管道,都为删除已排序流里的重复行

[root@local~]#sort file(s)|uniq[root@local~]# sort file(s)|awk ‘Last!=$0 { print }{Last=$0}’

 

 

12. 将回车字符/ 换行字符的行终结,一致转换为以换行字符作为行终结,可在下列方

式中选择一种:

[root@local~]#sed –e ‘s//r$//’ file(s)

[root@local~]#sed –e ‘s/^M$//’ file(s)

[root@local~]# mawk ‘BEGIN {RS=“/r/n"} {print}’file(s)

 

 

13. 要将单空格的文本行,转换为双空格的行,可在下列方式选择一种

[root@local~]#sed –e ‘/s/$//n/ ’file(s)

[root@local~]#awk ‘BEGTN{ ORS = "/n/n"){print}’file(s)[root@local~]#awk ‘BEGIN{ ORS="/n/n" }1file(s)[root@local~]#awk {print $0 “/n”} ’ file(s)[root@local~]#awk ‘{print;print ” ”} ’ file(s)

 

13. 语句

13.1. 条件语句

if(expressionl)stateme 刀t1else if(expression2)statement2else if(expression3)statement3else if(expressionk)statementkelsestatementk+l

 

13.2. 重复执行

awk 提供了 4 种重复执行语句 ( 循环 ):

1. 循环在起始处使用结束测试 :

while(expression)

statement

2. 循环在结尾处使用结束测试 :

do

        statement

while (expression)

3. 循环执行可计数的次数 :

for(expr1;expr2; expr3)

statement

4. 循环处理关联数组里的元素 :

for(key in array)

statement

例如:

for (name in telephone)

print name“/t" telephone[name]

 

13.3 数组成员测试

成员测试key in array 是一个表达式: 如果key 为array 的一个索引元素,则计算为1( 真) 。如果key 不是array的一个索引元素,则!(key in array) 为1 。

对于具有多下标(subscript) 的数组,在测试时,请使用圆括号,并以逗点分隔下标列表:(i ,j ,…,n)in array

成员测试不可能建立数组元素,然而引用元素时,如果元素不存在,便会建立它。因此你应该这么写:

if("Sally" in telephone)

print "Sally is in the directory"

而非:

if (telephone["Sally"]!= ””)

    print "Sally is in the directory"

因为第二种形式会在她(Sally) 不存在时,将其加入到目录里,并拥有一个空电话号码。

重点是: 你必须能够区分寻找索引(index) 与寻找特定值(value) 的差异。索引成员测试需要固定的时间,而值的查找时间是与数组里元素的个数成正比,这点我们在先前已通过break 语句内的for 循环解释过了。如果你需要时常用到这两种运算,那么构建反索引数组会比较实用:

for (name in telephone)

name_by_telephone[telephone[name]]=name

接下来,你就可以使用name_by_telephone ["555-0136"] 在一定时间内找到”Carol" 。当然,这里假定所有的值是唯一的: 如果这两人共享同一个电话,则name_by_telephone 数组只会记录最后一个名称。只要稍做修改就能解决这个问题:

for (name in telephone){if (telephone[name] in name_by_telephone)name_by_telephone[telephone[name]]=/name_by_telephone [telephone[name]) “/t”namee1sename_by_telephone[telephone[name]]=name

 

现在,name_by_telephone 即包含了以制表字符分隔的具有相同电话号码的人名列表。

14. 用户控制输入

awk 也可以通过的getline 语句做这件事。getline 会返回一个值,当输入被成功读取时,它的返回值为++I ,而返回值为0 时,则表示在文件结尾,而-1 则表示错误。它的用法很多,见表。

语法             说明getline       从当前输入文件中,读取下一条记录,存入$0 ,并更新NF, NR 与FNRgetline var   从当前输入文件中,读取下一条记录,存入var ,并更新NR 与FNRgetline<file   从file 文件中,读取下一条记录,存入$0 ,并更新NF, NR 与FNRgetline var<file 从file 文件中,读取下一条记录,存入var ,并更新NF, NR 与FNRcmd|getline    从外部命令cmd 读取下一条记录,存入$0 ,并更新NFcmd|getline var 从外部命令cmd 读取下一条记录,存入var

 

 

命令管道在awk 里可以发挥强大的功能。管道可以在字符串中标明,也可以包含任意的Shell 命令。这里是与getline 搭配使用,如下:

"date" I getline nowclose("date")print "The current time is".now

 

 

接下来说明的是: 如何在循环里使用命令管道:

command="head -n 15 /etc/hosts"while((command I getline s)>0)print sclose(command)

 

15. 执行外部程序

这里是解决电话名录排序问题较短的程序方案,使用临时性文件与systemty ,而非awk 管道:

tmpfile= “/tmp/telephone.tmp^for (name in telephone>print name "/t" telephone[name]>tmpfileclose(tmpfilejsystem("sort < tmpfile “)

 

临时性文件必须在调用system() 之前关闭,以确保任何缓冲区输出都正确地记录在文件内。

对于被system() 执行的命令并不需要调用close() ,因为close() 仅针对以I/O 重定向运算符所打开的文件或管道,还有getline, print 或printf 

传递给system[f 的命令可包含数行

system("cat <<EOFILE/nuno/ndos/ntres/nEOFILE"

它产生的输出和从嵌入文件复制到标准输出一样

Un0

das

tres

 

16. 用户自定义函数

函数定义如下:

function name(argl, }rg2, …,argn

{

statements

}

指定的参数在函数体中用来当作局部变量,它们会隐藏任何相同名称的全局性变量。函数也可用于程序它处,调用的形式为:

name(exprl, expr2, …,expn)  忽略任何的返回值

result=name(exprl, expr2, …,exprn) 将返回值存储到result 中

 

在每个调用点上的表达式,都提供初始值给函数参数型变量。以圆括号框起来的参数,必须紧接于函数名称之后,中间没有任何空白。

对标量参数所做的变动,调用者无从得知,不过对数组的变动就可看见了。换句话说,标量为传值(by vaule ),而数组则为传引用(by reference): 这对C 语言也是这样。

函数体里的return expression 语句会终止主体的执行,并将expression 的值与控制权传给调用点。如果expression 省略,则返回值由实现期定义。我们测试过的所有系统,返回的不是数字零就是空字符串。

 

17. 字符串函数

17.1. 子字符串提取

提取子字符串的函数:substr(string, start, 1en) ,会返回一份由string 的start 字符开始,共len 个字符长度的子字符串副本。字符的位置,从1 开始编号:substr("abcde", 2, 3) 将返回。bcd" 。 len 参数可省略,省略时,则默认为length(string)-start+1 ,选出字符串的剩余部分。

17.2. 字符串大小写转换

tolower(string) 会返回将所有字母改为同义的小写的string 副本,而toupper(string) 则返回被改为大写字母的string 副本。所以tolower("aBcDeF123") 返回”abcdef123",toupper("aBcDeF123") 返回"ABCDEF123" 。

17.3. 字符串大小写转换

index(string,  find) 查找string 里是否有字符串find ,然后返回string 里find 字符串的起始位置,如果在string 里找不到find ,则返回0 。例如index("abcdef","de") 会返回4 。

17.4. 字符串匹配

match (string, regexp) 将string 与正则表达式regexp 匹配,如果匹配,则返回

匹配string 的索引,不匹配,则返回0 。这种方式提供了比表达式(string~regexp) 还多的信息,后者只能得到计算值1 或0 。另外match ( ) 也具有一个有用的副作用: 它会将全局变量RSTART 设为在string 中要开始匹配的索引值,而将RLENGTH 设为要匹配的长度。而匹配子字符串则以substr(string, RSTART, RLENGTH) 表示。

17.5. 字符串替换

awk 在字符串替换功能上,提供两个函数:sub(regexp, replacement, target) 与gsub(regexp, replacement, target), sub() 将target 与正则表达式regexp 进行匹配,将最左边最长的匹配部分替换为字符串replacement。gsub() 的运行则有点类似,不过它会替换所有匹配的字符串( 前置g 表示global 全局之意) 。

17.6. 字符串替换

awk 针对当前输人记录$0 自动提供了方便的分割为字1,  $}, …、$NF ,也可以函数来做:split(string, array, regexp) 将string 切割为片段,并存储到array 里的连续元素。在数组里,片段放置在匹配正则表达式regexp 的子字符串之间。如果regexp 省略,则使用内建字段分隔字符FS 的当前默认值。函数会返回array 里的元素数量。

17.7. 字符串重建

join() 可确保参数数组不会被引用到,除非索引是在范围之内。否则,一个具有数组长度为0 的调用可能会建立arrayfl3 ,而修改了调用者的数组。插人的字段分隔字符为普通字符串,而非正则表达式,所以针对传递给split() 的一般正则表达式,join() 不会重建精确的原始字符串。

17.8. 字符串格式化

最后一个与字符串相关的函数是在用户控制下格式化数字与字符串:sprintf (format,expression1, expression2,…) ,它会返回已格式化的字符串作为其函数值。printf() 的运行方式也是这样,只不过它会在标准输出或重定向的文件上显示格式化后的字符串,而不是返回其函数值。较新的程序语言以更强大的格式化函数来取代格式控制字符串,但相对而言让代码变得很冗长。按照传统的文本处理应用来说,sprintf 与printf

18. 数值函数

函数           说明

atan2(y, x)   y 返回y/x 的反正切,值介于-pai 与+pai 之间。

cos(x)        返回x 的余弦值( 以弧度(radians) 计算) ,该值介于-1 与+1 之间

exp(x)        返回x 的指数,ex,

int(x)        返回x 的整数部分,截去前置的0

log(x)        返回x 的自然对数。

rand()        返回平均分布的虚拟随机r,O<=r<l

sin(x)        返回x 的正弦值( 以弧度(radians] 计算) ,该值介于-1 与+1 之间

sqrt(x)       返回x 的平方

srand(x)      设置虚拟随机产生器的种子为x ,并返回正确的种子。如果省略x ,则使用当前时间( 以秒计) 。如果。rand ( ) 未被调用,则awk 在每次执行时会从相同的默认种子开始;mawk 则不会。

 

系统巡检脚本 [复制链接]
--http://www.apelearn.com/bbs/thread-651-1-1.html


要求如下:
请使用vmstat采集间隔1秒连续60秒得数据,汇总各项数据的平均值,一并形成一个报告。

vmstat 1 60

 #! /bin/bash## for vmstat 1 60 and get the average number.
## Writern by Aming.comm="/usr/bin/vmstat"
f1="/tmp/1.txt"
f2="/tmp/2.txt"
f3="/tmp/3.txt"$comm 1 60 >$f1
tail -n 60 $f1 >$f2
n=`awk '{print NF}' $f2 |head -n1`
echo "">$f3
for i in `seq 1 $n`; do
awk 'BEGIN {a=0}; {a=a+$"'$i'"};END{print a/NR}' $f2 >> $f3
donecat $f1
echo "the average number is:"
echo "-----------------------------------------------------------------------------------"
cat $f3|xargs

 


 

 

删除文件的某一列,不打印文件的某一列

删除文件的某一行,不打印文件的某一行

比如删除第二列

赋值:'{$2="" ;print $0}'

awk -F ',' '{$2="" ;print $0}' 1.txt >2.txt

 

比如删除第二行

awk '{print $$2}' 1.txt
2 k 5 dfeii l 11 l

 


要打印一定要加BEGIN

[root@steven tmp]# awk '{print " '\'' "}'
^C
[root@steven tmp]# awk 'BEGIN{print " '\'' "}'
 '


计算之后再输出 老男孩 sersync实战

echo -en "$(date +%H%M)\t" >>/tmp/tmp1.log  &&tree |wc -l >>/tmp/tmp1.log
echo -en "$(date +%H%M)\t" >>/tmp/tmp2.log  &&tree |wc -l >>/tmp/tmp2.log


paste tmp1.log  tmp2.log >total.txt
awk '{if($1==$3) print $1" "$2" "$4" "(($2-$4));}' total.txt
 cat total.txt
1134    349    1134    350
1134    350    1134    45
1134    350    1134    45
1134    350    1134    45

awk '{if($1==$3) print $1" "$2" "$4" "(($2-$4));}' total.txt
1134 349 350 -1
1134 350 45 305
1134 350 45 305
1134 350 45 305

 

 

f

 

转载于:https://www.cnblogs.com/MYSQLZOUQI/p/5199750.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/430861.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

tensor判断是否相等_PyTorch的Tensor(中)

背景在PyTorch的Tensor系列上一篇文章中&#xff1a;Gemfield&#xff1a;PyTorch的Tensor&#xff08;上&#xff09;​zhuanlan.zhihu.comGemfield介绍了一个Tensor的创建过程&#xff0c;特别是在创建一个Tensor的时候&#xff0c;调用栈从Python到C再回到Python的过程。与此…

c语言字符串未初始化strcat,C语言中字符串常用函数strcat与strcpy的用法介绍

strcpy原型声明&#xff1a;extern char *strcpy(char* dest, const char *src);头文件&#xff1a;#include 功能&#xff1a;把从src地址开始且含有NULL结束符的字符串复制到以dest开始的地址空间说明&#xff1a;src和dest所指内存区域不可以重叠且dest必须有足够的空间来容…

charles抓包工具使用指南

前言移动APP抓包PC端抓包查看模式其他功能问题汇总1、 前言&#xff1a; Charles是一款抓包修改工具&#xff0c;相比起burp&#xff0c;charles具有界面简单直观&#xff0c;易于上手&#xff0c;数据请求控制容易&#xff0c;修改简单&#xff0c;抓取数据的开始暂停方便等等…

android电视打印信息解析,关于液晶电视打印信息

原来是波特率的原因。。换了个波特率显示正常了&#xff0c;下面这个是红灯亮不开机的酷开k2打印信息&#xff0c;有老师能解释一下怎么看吗JHello world!{m3a} svn-r(Apr 2 2015 19:53:30)init_hwsetting_cpre_hwsetting_cpost_hwsetting_cparse hw setting DONE!internal ro…

bzoj1269 文本编辑器 splay

直接搞棵splay就行了&#xff0c;不要把光标弄到树中而是把光标当成询问或操作区间的端点标志这样会简单很多。 7点40分写到9点20分&#xff0c;包括调试总共花了一个小时40分钟&#xff0c;这次是自己独立调出来的&#xff0c;总算对splay有一定的了解。 设计操作&#xff1a;…

sap bom递归_SAP软件之化工行业特点01

作者&#xff1a;阿long声明&#xff1a;本文章仅用于SAP软件的应用、学习沟通&#xff0c;不代表SAP公司&#xff1b;文中所示截图来源SAP软件&#xff0c;相应著作权归SAP所有。SPA中关于制造的几种介绍2020.06.29简单的说&#xff0c;制造业中&#xff0c;生产管理是企业的组…

android 对话框 图片,android – AlertDialog按钮的图像

由于不推荐使用onPrepareDialog,因此您可以使用onShowListener.你也应该设置Drawable边界,或者它将被放置在最左边.下面的代码输出public class MyDialog extends DialogFragment {Overridepublic Dialog onCreateDialog(Bundle savedInstanceState) {final AlertDialog dialog…

并发事务正确性的准则 可串行化_从0到1理解数据库事务(上):并发问题与隔离级别...

最近准备写一篇关于Spanner事务的分享&#xff0c;所以先分享一些基础知识&#xff0c;涉及ACID、隔离级别、MVCC、锁&#xff0c;由于太长&#xff0c;只好拆分成上下两篇&#xff1a;上&#xff1a;并发问题与隔离级别主要讲事务所要解决的问题、思路&#xff0c;先理解为什么…

Windows 8.1 Windows Phone 开发环境安装遇到的问题

以前使用 Windows 8 开装 WP 8 的开发环境&#xff0c;很是顺利。 将系统升级到 Windows 8.1 后&#xff0c;先是安装了 Windows 8.1 旗舰本&#xff0c;安装后发现没有 Hyper-V 功能。 换成企业版&#xff0c;确定有 Hyper-V 功能后&#xff0c;安装 VS2010 WP8 SDK 后&#x…

android eclipse services,Eclipse中调试Android Framework本地代码模块部分过程记录

环境&#xff1a;Amlogic S905M2 ubunt12.04 win7 adt_bundle_linux Android SDK过程&#xff1a;1.为避免用Eclipse基础版本(Luna)后需要安装包括adt、cdt等插件麻烦&#xff0c;直接解压adt_bundle_linux安装IDE环境2.调试准备&#xff1a;目标设备(Amlogic S905M2)中需要…

python数独代码_python 实现计算数独

输入文件格式&#xff1a;008309100900060004007504800036000540001000600042000970005907300600010008004608200输出结果&#xff1a;yuan********************0 0 8 3 0 9 1 0 09 0 0 0 6 0 0 0 40 0 7 5 0 4 8 0 00 3 6 0 0 0 5 4 00 0 1 0 0 0 6 0 00 4 2 0 0 0 9 7 00 0 5…

MyEclipse配色字体等配置的解决方案

Myeclipse黑色配色方案&#xff08;精心修改版&#xff09; http://download.csdn.net/detail/rehongchen/6579945 如何改变Myeclipse编辑区背景色 http://my.oschina.net/epiclight/blog/465506 -------------------------------------------------------------------------…

android studio内置终端,Android Studio Terminal xx不是内部或者外部命令

背景在使用AS工具自带命令面板Terminal的时候&#xff0c;相信你有碰到过&#xff1a;xx不是内部或者外部命令&#xff0c;也不是可运行程序。解决办法就是配置环境变量一、在 Terminal 中使用 adb&#xff0c;报 adb 不是内部或者外部命令&#xff0c;也不是可运行的程序。解决…

python pp模块_python常用模块

1、re模块re模块用于对python的正则表达式的操作1.1 什么是正则正则就是用一些具有特殊含义的符号组合到一起(称为正则表达式)来描述字符或者字符串的方法。或者说&#xff1a;正则就是用来描述一类事物的规则。(在Python中)它内嵌在Python中&#xff0c;并通过 re 模块实现。正…

[Leetcode]@python 90. Subsets II.py

题目链接 https://leetcode.com/problems/subsets-ii/ 题目原文 Given a collection of integers that might contain duplicates, nums, return all possible subsets. Note: Elements in a subset must be in non-descending order. The solution set must not contain dupli…

android glu,我可以使用glu与Android NDK

Does OpenGL ES not have glu?OpenGL ES 1.1&#xff1a;#include #include OpenGL ES 2.0&#xff1a;#include #include Is there a port I can use?是的&#xff0c;Android的部分端口为GLU – GLU ES(支持gluErrorString&#xff0c;gluPerspective和许多其他功能)&#…

线程间通信 GET POST

线程间通信有三种方法&#xff1a;NSThread GCD NSOperation 进程&#xff1a;操作系统里面每一个app就是一个进程、 一个进程里面可以包含多个线程&#xff0c;并且我们每一个app里面有且仅有一条主线程。scrollViewDelegate 的方法 &#xff1a; &#xff08;UIView *&…

android 恢复app 到前台,android手机把app disable了,怎么恢复

程序源代码如下:main(){int i,j,k;printf("\n");for(i1;i<5;i)    &#xff0f;*以下为三重循环*/for(j1;j<5;j)for (k1;k<5;k){if (i!k&&i!j&&j!k)    /*确保i、j、k三位互不相同*/printf("%d,%d,%d\n",i,j,k);}}main(){…

python mount回调函数_为python回调函数设置argtype

我对Python很在行&#xff0c;所以希望我能正确地表达这个问题。在整个问题涉及从Python调用C例程。我可以通过把一些相关的问题/答案凑在一起来接近&#xff0c;但我似乎不能把事情安排得很好。有两个方面&#xff1a;第一个是用指针调用C例程&#xff0c;第二个是使用回调函数…

参考 备份

原链接http://help.jd.com/Vender/question-1004.html 京东开放平台招商基础资质标准 一、基础资质标准&#xff1a; 注&#xff1a;商家可以选择京东质检平台中的第三方机构检测服务&#xff0c;申请地址&#xff1a;http://fw.jd.com/ser/list.action?page1&cid400 店铺…