newLISP list操作

构建一个list

注意要标记不要求值,比如用‘ 或者list

> (list "a" "b" "c")
("a" "b" "c")

或者

> ‘("a" "b" "c")
("a" "b" "c")

处理string list

在一个string list中用正则表达式查找

查找第一个匹配到的元素:

> (set ‘l ‘("WARNING: org.apache.hadoop.metrics.jvm.EventCounter is deprecated. Please use org.apache.hadoop.log.metrics.EventCounter in all the log4j.properties files." "recommend" "search" "test"))
("WARNING: org.apache.hadoop.metrics.jvm.EventCounter is deprecated. Please use org.apache.hadoop.log.metrics.EventCounter in all the log4j.properties files."
 "recommend" "search" "test")
> (find "WARN" l 1)
0
> (find "WARN3" l 1)

注意,第三个参数用来表示用正则表达式查找,1表示大小写不敏感,0表示敏感。

用正则表达式查找并删除string list中的string

;; @param case-insensitive 1 for case-insensitive search or 0 for no special options
(define (remove str-list str-regex case-insensitive)
  (set ‘i (find str-regex str-list case-insensitive))
  (pop str-list i)
  str-list
  )

这样下面的函数利用上面的函数将hive命令返回的string list中不需要的过滤掉,只剩下数据库名称。

;; @syntax (HIVE:show-dbs)
(define (show-dbs)
  (set ‘r (exec (format "hive -e ‘show databases‘ 2>&1")))
  (set ‘r (STRING_LIST:remove r "^WARNING.+" 1))
  (set ‘r (STRING_LIST:remove r "^Logging.+" 1))
  (set ‘r (STRING_LIST:remove r "^Hive.+" 1))
  (set ‘r (STRING_LIST:remove r "OK" 1))
  (STRING_LIST:remove r "^Time taken.+" 1)
  )

newLISP list操作

时间: 2024-11-07 16:30:14

newLISP list操作的相关文章

使用NewLisp设计Key-Value数据库系统

Lisp是一个很好的语言,最强大的就是其S-表达式,可以说是Lisp能活到今天的唯一一个原因.其次就是函数为基本类型和后来的闭包.当然Lisp也有很大的缺点,即:一般的设计师难以避免Lisp的缺点. Lisp有很多方言,很多子系列,可以说百花齐放,也可以说是散沙一盘.这就是Lisp的优点之一,同时也是其缺点之一,但是这些缺点主要是用Lisp的人造成的,而之所以会这样,是因为Lisp太容易滥用了(其缺点正是因为其优点导致的). NewLisp是一个非常强大的Lisp实现,也可以称为一个方言,是一个

newLISP — 交互式教程

这份文档于 2006 年 5 月被 Rick Hanson ([email protected]) 做了一些修正和更新后被转换成 html 文档.2008 年 12 月被 L.M 更新到 v.10.0 版本. 版权所有 John W. Small 2004. 你可以到 newLISP 官方网站 www.newLISP.org 下载和安装这门语言. 关于这个教程的任何意见和问题请发邮件到 [email protected]. 中文版翻译时,newLISP 的版本已经到了 10.6.这和当时撰写文档

远程运行newLISP代码

newLISP提供了一个简单的MapReduce的方式,利用net-eval函数,可以向远程运行这newlisp服务进程的机器发起调用. 本文介绍最简单的方法: 首先服务器启动newlisp进程 newlisp -l -c -d 4711 & -l 代表记录日志,默认是打印到终端 -c 是不会出现常见的newlisp的会话终端 -d 是在连接之间保存状态,一个边际效应就是后续的请求必须等待前面的请求已经完成才能发出 下面来试用一下: 假设在A机器已经使用了上面的命令启动了newLISP服务进程

如何用一个app操作另外一个app.比如微信群控那样的

如何实现一个app.控制另外的app,比如市面上群控微信的,是用测试工具的原理?还是什么模拟点击的原理? 如何用一个app操作另外一个app.比如微信群控那样的 >> android 这个答案描述的挺清楚的:http://www.goodpm.net/postreply/android/1010000007186891/如何用一个app操作另外一个app比如微信群控那样的.html

ELK 学习笔记之 elasticsearch Mget操作

Mget操作: 查询多个文档: curl -XGET 'http://192.168.1.151:9200/_mget' -d '{"docs": [{"_index": "library","_type": "books", "_id": "1"}, {"_index": "library","_type"

条件、循环、函数定义、字符串操作练习

注意标准库的两种导入与使用方式,建议大家采用<库名>.<函数名>的方式. 对前面的代码进行优化,用for,while,if,def实现: 用循环画五角星 1 import turtle 2 3 turtle.fillcolor("red") 4 turtle.begin_fill() 5 for i in range(5): 6 turtle.forward(100) 7 turtle.right(144) 8 turtle.end_fill() 用循环画同心圆

Python 文件操作

操作文件时,一般需要经历如下步骤: 打开文件 操作文件 一.打开文件 文件句柄 = open('文件路径', '模式') 打开文件时,需要指定文件路径和以何等方式打开文件,打开后,即可获取该文件句柄,日后通过此文件句柄对该文件操作. 打开文件的模式有: r,只读模式(默认). w,只写模式.[不可读:不存在则创建:存在则删除内容:] a,追加模式.[可读: 不存在则创建:存在则只追加内容:] "+" 表示可以同时读写某个文件 r+,可读写文件.[可读:可写:可追加] w+,写读 a+,

Python操作数据库(mysql redis)

一.python操作mysql数据库: 数据库信息:(例如211.149.218.16   szz  123456) 操作mysql用pymysql模块 #操作其他数据库,就安装相应的模块 import  pymysql ip='211.149.218.16' port=3306 passwd='123456' user='root' db='szz' conn=pymysql.connect(host=ip,user=user,port=port,passwd=passwd,db=db,cha

数据库权限分配操作

1.远程登录mysqlmysql -h ip -u root -p 密码2.创建用户格式:grant 权限 on 数据库.* to 用户名@登录主机 identified by "密码";例1:增加一个test1用户,密码为123456,可以在任何主机上登录,并对所有数据库有查询,增加,修改和删除的功能.需要在mysql的root用户下进行mysql>grant select,insert,update,delete on *.* to [email protected]&quo