常用脚本总结

re

re是脚本的基础。用来匹配一系列符合某种句法规则的字符串。

re中有些特殊意义的字符,称为元字符元字符icon-default.png?t=N7T8https://www.runoob.com/regexp/regexp-metachar.html


linux

man

不会就man

find

用途:查找文件,处理

语法:

find path [option] [command]

其中option支持按时间,大小,类型,名称等筛选文件,command对find的结果进行后处理,如:

#option:
-mmin n #n分钟前修改过的,+mmin则为n分钟内的
-mtime n #n天前修改过的
-newer file #比file新的
-name pattern #指定文件名,支持*通配符,-iname是忽略大小写
-type d/f/l #类型为dir/file/link的

#command
-delete #删除find的内容
-exec rm -rf {} \; #删除find的内容,并且不需要确认, -ok则需要确认

#operators
#表达式支持使用操作符,如!,and,or等
find . ! -name "xxx" -a ! -name "yyy" #查找除xxx,yyy外的文件

grep

用途:查找文件中的字符

语法:

grep [option] pattern files

option可以控制显示内容,指定pattern种类等,pattern可使用正则表达式,如:

#option
-C n  #除了显示匹配行,还会显示前后的n行内容;
-n    #显示匹配行号
-P pattern    #指定pattern使用的re为Perl-re
-i    #忽略pattern大小写

sed

用途:批量处理文件内容

语法:

sed option pattern file
#option
-e    #一行有多个命令,如:sed -e 's/aa/bb/g' -e 's/cc/dd/g' file
-i    #原位替换,如:sed -i 's/aa/bb/g' file,直接将file中的aa修改为bb,危险动作,-i.bak则可以先备份再修改
-f    #从-f指定的文件为pattern,可以解决一些特殊符号的问题
-n    #仅显示scrpt处理后的结果,一般和p一起使用
#patern动作
s    #替换:sed 'm,ns/old_pattern/new_pattern/g' file,替换m~n行的pattern
p    #打印
d    #删除:sed '1,2d' file
a    #新增add
c    #取代
i    #插入insert

#批量替换命令
sed -i 's/old_pattern/new_pattern/g' `find . -name "*.sv"`

awk

用途:文本处理

语法:

awk '{[pattern] action}' file   # 行匹配语句 awk '' 只能用单引号

#每行按空格或TAB分割,输出文本中的第1、4项
awk '{print $1,$4}' log.txt    #这个操作对象是每一行,还可以加上pattern进行行筛选

#默认分隔符是空格或tab,可以使用-F指定分隔符,也可以指定多个分隔符,进行多次分割
awk -F , '{print $1}' log.txt    #以,为分隔符,输出第一项
awk -F '[ ,]' '{print $1}' log.txt    #以空格和,为分隔符,输出第一项

#-v可以设定变量,以供后面的action使用
awk -v a=1 '{print $1+a} log.txt    #第一项+1

#-f可以指定script为文件中的内容,和sed类似

#行筛选支持运算符,包含算数,逻辑运算符,还支持?:,in等操作符
awk '$1>2 && $2=="aa" {print $1,$2} log.txt #第一项>2,并且第二项为aa的行,打印出前两项

vim

批量替换,涉及s,g命令

#s命令,:help :s查询用法

[range]s/{pattern}/string/flag [count]
#range指定范围,
    #默认指本行,
    #%是所有行,
    #m,n是从m~n行,
    #'<,'>是visual block行
#pattern可以直接指定字符串,也可以使用正则表达式
#string可以直接指定字符串,也可以使用匹配的内容
    #&表示前面pattern匹配的内容
    #如果前面pattern使用了捕获组(),string中可以使用\n引用,n:1~9。捕获组按(从左到右排序。
    #string可实现大小写转换:\L\1\E(把\1内容全转化为小写,\U则是大写,\l\u则只有首个字母转换)
#flag包含
    #c:confirm each substitution; 
    #g:global,本行所有的匹配; 
    #i: ingore case; 
    #n: report the num of matches,可用于统计匹配的次数,如:%s/aaa//ng,统计aaa出现次数
#count指定执行次数,从选定的最后一行开始,不常用

#g命令,:help :g查询用法

[range]g[!]/{pattern}/cmd
#range与s命令类似,默认所有行
#!是反选,g!同vg;
#pattern同s命令;
#cmd包括但不限于:
    #d: delete
    #m: move
    #t: 复制
    #s: substitute
    #c:confirm

g/xxx/d    #删除所有包含xxx的行
1,2g!/xxx/d    #1~2行中,删除不包含xxx的行
g/xxx/s/yyy/zzz/    #包含xxx的行中,将yyy替换为zzz
g/xxx/m$    #将包含xxx的行,移动到最后一行,m0则为移动到第一行

其中,s命令中的string项,还可以使用函数式\=来实现算数运算,如数值增减等,可用于波形比较时的文本处理:

1,10s/\d\+/\=submatch(0)+1/g    #把1~10行的所有数字,都增大1
#submatch(0)指整个匹配内容:\d\+

'<,'>s/x\(\d\+\)z/\=line(".")-line("'<")    #以选中的第一行为基准,将每行的数值从0递增
#submatch(1)则引用的\1,即pattern中的第一个捕获组

s/x\zs\d\zey/\=line(".")-10    #\zs..\ze表示只对中间的\d做替换,外头的x和y不替换

如果函数式中需要实现除法运算,只需将s//改为s##即可。

借助\=还可以实现格式化转化,如进制转换,数值补0,产生数列等。

%s/\d*/\=printf('%08s',submatch(0))/g    #不足8位的高位补0
%s/\d\+/\=printf("%X", submatch(0))/g    #10进制转化为16进制
%s/\x\+/\=printf("%d", "0x".submatch(0))/g  #16进制转10进制

1,10s/^/\=printf("data%02d",line(".")-1)    #1~10行,写入data00,data01,...data09

s/^/\=range(1,10)    #生成10列数:1,2,...10
s/^/\=range(1,10,2)    #生成5列数:1,3,5,7,9

perl

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: WINCC 是西门子工业自动化领域非常常用的人机界面软件,利用 WINCC 可以对工业生产过程进行监控和控制。WINCC 常用 C 脚本可以用于读取数据库的操作。 在 WINCC 中,常用的数据库包括 Microsoft SQL Server、My SQL 等。以下是一个示例的 C 脚本,用于读取数据库中的数据: ```c int ReadData() { // 连接数据库 string connStr = "Data Source=127.0.0.1;Initial Catalog=TestDB;User ID=sa;Password=123456;"; SqlConnection conn = new SqlConnection(connStr); conn.Open(); // 查询语句 string sql = "SELECT * FROM TableName"; SqlCommand cmd = new SqlCommand(sql, conn); // 执行查询 SqlDataReader reader = cmd.ExecuteReader(); // 遍历结果 while (reader.Read()) { // 获取每行数据的字段值 int id = (int)reader["id"]; string name = (string)reader["name"]; float value = (float)reader["value"]; // 处理数据,例如显示在界面上 printf("ID: %d, Name: %s, Value: %.2f\n", id, name, value); } // 关闭连接 reader.Close(); conn.Close(); return 0; } ``` 以上示例中,首先使用连接字符串 `connStr` 连接到指定的数据库服务器。然后构造 SQL 查询语句,执行查询,并通过 `SqlDataReader` 对象获取每行数据的字段值。最后可以对数据进行处理,例如输出到界面上。 需要注意的是,以上示例仅为演示目的,实际使用时可能需要根据具体数据库类型和表结构来修改连接字符串和查询语句。另外,在使用 C 脚本操作数据库时,还需要确保数据库服务器的连接权限、网络连接等方面的配置正确。 ### 回答2: WinCC是西门子公司开发的一款用于监控和控制系统的工业自动化软件。在WinCC中,常常会用到C脚本来实现一些复杂的功能,包括读取数据库。 常用的C脚本命令包括以下几个步骤: 第一步是建立数据库连接。可以使用内置函数"SQLConnect"来连接数据库。需要提供数据库的信息,比如IP地址、用户名、密码等。连接成功后,返回一个连接句柄。 第二步是执行SQL查询语句。使用内置函数"SQLExec"来执行SQL语句。需要提供连接句柄和查询语句。查询结果可以存储在一个结果集中。 第三步是处理查询结果。使用内置函数"SQLFetch"来逐行获取查询结果。可以通过字段索引或字段名来获取字段值。可以将获取到的数据存储在变量中,方便后续使用。 第四步是关闭数据库连接。使用内置函数"SQLDisconnect"来关闭数据库连接。需要提供连接句柄。 通过上述步骤,可以在WinCC中使用C脚本来读取数据库中的数据。读取数据库的过程可以用来获取实时的数据,比如温度、压力等传感器的数据,以及历史数据查询等功能。读取数据库的数据可以在WinCC中进行进一步的处理和展示,比如绘制曲线图、生成报表等。 总结起来,WinCC常用的C脚本命令可以实现读取数据库的功能。通过建立数据库连接、执行SQL查询语句、处理查询结果和关闭数据库连接等步骤,可以在WinCC中获取数据库中的数据,实现监控和控制系统的自动化功能。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值