四种模式字符串提取和替换: #第一种:对大括号中的以逗号分割的文件列表进行拓展。如 touch {a,b}.txt 结果为a.txt b.txt。...${var##pattern} #如果是,就从命令行把variable中的内容去掉 左边 最长的匹配模式 # 字符串提取和替换 ${var:num} #shell在var中提取第num...表示从$var字符串的第$num1个位置开始提取长度为$num2的子串,不能为负数。...而当通过set +h将h选项关闭后,上述情况就不会出现。...* i:interactive-comments 当前的 shell 是一个交互式的 * m:monitor 打开监控模式就可以通过Job control来控制进程的停止、继续,后台或者前台执行等。
n个字符 匹配任意多次字符: 使用*实现匹配前一个字符出现0次或任意多次(本例则是匹配g字符出现0次或任意多次) [root@localhost ~]# ls blog bloog blooog...3次,最多不大于5次 12333 123333 1233333 匹配出现1次或任意多次的行: 使用+匹配前一个字符出现1次或任意多次的行 [root@localhost ~]# ls gogle google...-d #-d 分隔符:按照指定分隔符进行分割 -c #-c 字符范围:不依赖分割符来分割,而是通过字符范围进行字段提取...nologin 通过使用 -d 指定分隔符 -f 指定打印第个字段,以下我们分别截取第1和第7个字段 [root@localhost ~]# cut -d ":" -f 1,7 /etc/passwd...{FS=":"} {printf $1 "\t" $7 "\n"}' root /bin/bash 打印行内容的同时,打印出行号(NR变量),和本行的字段数(NF变量) [root@localhost
简介 正则表达式 是包含文本和特殊字符的字符串, 为高级的文本模式匹配, 抽取, 与文本形式的搜索和替换功能提供了基础 Python通过标准库re模块来支持正则表达式 模式匹配的两种方法完成匹配(...匹配任何字符(除\n之外) f.o ^ 匹配字符串起始部分 ^foo $ 匹配字符串终止部分 bar$ * 匹配0次或者多次前面出现的正则表达式 [A-Za-z0-9]* + 匹配1次或者多次前面出现的正则表达式...[^\t\n] 不匹配制表符或换行符 使用闭包操作符实现存在性和频数匹配 符号 说明 * 匹配左侧的正则表达式出现零次或多次的情形,这称作Kleene闭包 + 匹配一次或多次出现的正则表达式,这称作正闭包操作符...使用圆括号进行分组的一个副作用就是,匹配模式的子字符串可以保存起来供后续使用。这些子组能够被同一次的匹配或者搜索重复调用,或者提取出来用于后续处理。...使用圆括号对匹配模式的各部分进行分组和提取操作 特殊字符与重复出现 匹配0~1个中间子域名 >>> import re >>> patt = '\w+@(\w+\.)?
string} ①${var:-string}和${var:=string}:若变量var为空,则用在命令行中用string来替换${var:-string},否则变量var不为空时...,则用变量var的值来替换${var:-string};对于${var:=string}的替换规则和${var:-string}是一样的,所不同之处是${var:=string}若var为空时,用string...(因为变量var此时为空,所以这两种说法是等价的) ③${var:?string}替换规则为:若变量var不为空,则用变量var的值来替换${var:?...stcase # echo ${var##*e} # echo ${var##*s} e # echo ${var##test} case 4、字符串提取和替换...第二种模式:{var:num1:num2},num1是位置,num2是长度。表示从var字符串的第num1个位置开始提取长度为num2的子串。不能为负数。
这个命令把它的参数作为比较表达式或者作为文件测试,并且根据比较的结果来返回一个退出状态码。if/test结构中并不是必须右中括号,但是新版的Bash中要求必须这样。...string} ①${var:-string}和${var:=string}:若变量var为空,则用在命令行中用string来替换${var:-string},否则变量var不为空时,则用变量var的值来替换...(因为变量var此时为空,所以这两种说法是等价的) ③${var:?string}替换规则为:若变量var不为空,则用变量var的值来替换${var:?...e} stcase # echo ${var##*e} # echo ${var##*s} e # echo ${var##test} case 4、字符串提取和替换 ${var:num},$...第二种模式:${var:num1:num2},num1是位置,num2是长度。表示从$var字符串的第$num1个位置开始提取长度为$num2的子串。不能为负数。
$1 入参,空值时默认赋值技巧 variable=${1:-"default value"} # 当未传参时,赋默认值。... echo $3 } # 调用 myfun "tom" "lucy" "jack" 条件判断 if [[ biaodashi ]] 判断文件是否存在 -f 存在真 判断目录是否存在 -d 存在真 判断字符串是否空...删除最右边一个字符 123A123B456456 提取最后一位 str="12345678" i=$((${#str}-1)) #字符串长度减去 1,故 i=7 echo ${b:$i:1} #输出 8...结果的第一列是仅仅在文件 1 出现的,第二列是仅仅在文件 2 出现 的,第三列是共同出现的。-1 表示不显示第一列,-2 表示不显示第二列,-3 表示不显示第三列。...是否存活:考察 curl 的使用、文件入参、待优化多次检测 #!
算数运算符 原生bash不支持简单的数学运算,但是可以通过其他命令来实现,例如 awk 和 expr,expr 最常用。 expr 是一款表达式计算工具,使用它能完成表达式的求值操作。...,而是通过字符范围(行首为0)来进行字段提取。...~ B 判断字符串A中是否不包含能匹配B表达式的子字符串 动作(Action) : 格式化输出 流程控制语句 常用参数: -F 指定输入时用到的字段分隔符 -v 自定义变量...= 不等于 关系运算符 A~B 判断字符串A中是否包含能匹配B表达式的子字符串 关系运算符 A!...通过这个实验,大家可以发现,虽然awk是列提取命令,但是也要按行来读入的。这个命令的执行过程是这样的: 1)如果有BEGIN条件,则先执行BEGIN定义的动作。
字符串 声明和赋值 name='jero' # 单引号 hellojero="hello, $name" # 双引号,可以引用变量 再看看复杂点的操作。...表达式 含义 ${#string} $string 的长度 ${string:position} 在 $string 中, 从位置 $position 开始提取子串 ${string:position...:length} 在 $string 中, 从位置 $position 开始提取长度为 $length 的子串 ${string#substring} 从变量 $string 的开头, 删除最短匹配 $...long%%a*} # 123456789,从尾开始删除最长匹配 echo ${long/abc/ABC} # 123456789ABCdefg123456789abcdefg123456789,替换首次出现的子字符串.../html/sect_10_02.html http://tldp.org/LDP/abs/html/arrays.html Shell字符串 Shell数组:shell数组的定义、数组长度 bash
子串提取、替换 对于字符串 file=/dir1/dir2/dir3/my.file.txt,还可以使用 ${} 语法来进行子串提取和替换: ${file: start: length} 语法: ${...2.5.1 直接修改 IFS 环境变量 对于长字符串分隔符不是空白符(IFS 默认分隔符为空白符:即空格、tab、换行符)的长字符串,可以通过修改 IFS 环境变量来指定字符串分割规则。...]]:判定字符串是否等于空 [[ -n $str ]]:判定字符串是否不等于空 4. [ ] 语法 【注】[ ] 不能用来判断字符串相包含;且判断字符串的大小关系时需要使用 `` 转义 ,防止...bash shell 将其识别为重定向符号;此外,对于 -z 和 -n 选项,字符串必须要用 "" 包裹,不然可能导致奇怪的问题,建议 [] 语法中用到的字符串变量都用 "" 包裹。...str2 [ $str1 \< $str2 ]:判定字符串 str1 是否按字典序小于字符串 str2 [ -z "$str" ]:判定字符串是否等于空 [ -n "$str" ]:判定字符串是否不等于空
即便是采集熟手,想要通过正则匹配准确拿到想要的信息,有时也要经过多次尝试,更不用说刚刚接触八爪鱼采集器的小白了。正则表达式是什么?正则表达式是一种字符串匹配的模式,用于描述一类字符串的集合。...具体来说,正则表达式可以用特定的符号和字符组合来匹配不同的字符串模式。如: - \d 表示任意一个数字字符- * 表示重复零次或多次 - + 表示重复一次或多次- ?...,我们可以灵活构建各种各样的正则表达式来匹配不同的字符串模式,最终实现采集数据的调整。...Step 1 : 选中要格式化的文本整个字段提取完成以后,鼠标移动到目标字段上,然后点击 【…】按钮,选择【格式化数据】,就会进入【格式化数据】配置页面。点击【添加步骤】,选择【正则匹配】。...Step 2 : 用ChatGPT获取正则表达式我们可以直接向ChatGPT提问:如何利用正则表达式提取出其中的部分信息?在添加步骤中直接输入表达式,但匹配结果显示为空,效果不佳。
获取字符串的长度 string="abcd" echo ${#string} #输出 4 提取子字符串 string="alibaba is a great company" echo ${string...:1:4} #输出liba 查找子字符串 string="alibaba is a great company" echo `expr index "$string" is` 查找字符串is第一次出现的下标...在前面的例题中我们已多次使用过这个函数。 printf 命令的语法 printf(“格式控制字符串”, 输出表列) 中格式控制字符串用于指定输出格式。格式控制串可由格式字符串和非格式字符串两种组成。...Shell if else语句 f 语句通过关系运算符判断表达式的真假来决定执行哪个分支。...Fi表示结束,if和fi必须成对出现。注意:expression 和方括号([ ])之间必须有空格,否则会有语法错误。 例句: #!
我们知道计算机的运作不能离开硬件,但使用者却无法直接操作硬件,硬件的驱动只能通过一种称为操作系统(OS,Opertating System)的软件来管控。...使用者没有办法直接操作一个kernel,而是通过kernel的外壳程序,也就是所谓的shell,来与kernel沟通。...shell是一个使用者与系统的交互界面(interface), 只能让使用者通过命令行(command line)来使用系统来完成工作。...# shell字符串取子串: ${file:0:5}:提取最左边的 5 个字节:/dir1 ${file:5:5}:提取第 5 个字节右边的连续 5 个字节:/dir2 # shell字符串变量值的替换...test命令有两种形式 test expression [ expression ] bash的test目前支持三种测试对象 string:字符串 integer:整数 file:文件 当expression
通过expr获取字符串长度 获取字符索引位置 获取子串长度 抽取字符串中的子串 索引抽取字符串中的子串 #!.../bin/bash # 获取字符串长度 var1="Hello World" echo "var1 = $var1" len=${#var1} echo "var1 len = $len" # 通过...var2="redis mysql pgsql sqlserver" echo "var2 = $var2" # 从 var2 第 10 位开始提取子串 substr1=${var2:10} echo..."substr1 = $substr1" # 从 var2 第 10 位开始提取长度为 5 的子串 substr2=${var2:10:5} echo "substr2 = $substr2" #...= $substr4" # 从 var2 的右边第 5 开始提取长度为 5 的子串 substr5=${var2:-5:5} echo "substr5 = $substr5" # 从 5 开始,
简介 Bash Shell 使用「环境变量」来存储有关 Shell 会话和工作环境的信息。...3.1 设置局部用户定义变量 通过使用等号来设置局部环境变量,并给其赋值,值可以是数值或者字符串。...var} 3.5 删除环境变量 在 Bash Shell 使用 unset 命令来删除环境变量。 unset var 和修改全局变量类似,在子进程中删除全局变量也无法反映到父进程中。...) HISTFILESIZE 最多在历史文件中存多少行 HISTTIMEFORMAT 如果设置了且非空,就用作格式化字符串,以显示 Bash 历史中每条命令的时间戳 HISTIGNORE 由冒号分隔的模式列表...LC_CTYPE 决定如何解释出现在文件名扩展和模式匹配中的字符 LC_MESSAGES 在解释前面带有 $ 的双引号字符串时,该环境变量决定了所采用的语言环境设置 LC_NUMERIC 决定着格式化数字时采用的语言环境设置
echo命令可以用单引号或双引号来划定文本字符串。如果在字符串中用到了它们,需要在文本中使用一种引号,而用另外一种来将字符串划定起来 把文本字符串和 命令输出显示在同一行中。用 –n 参数: #!.../bin/bash echo –n “The time and date are: ” date 11.4 使用变量 通常会需要在shell命令使用其他数据来处理信息,可以通过变量来实现。...注意: 命令替换会创建一个子shell来运行对应的命令。子shell所执行命令是无法使用脚本中所创建的变量的。 在命令行提示符下使用路径./也会创建出子shell。 比如:test3脚本中 ....符号: << 还需要指定一个文本标记来划分输入数据的开始和结尾,任何字符串都可以作为文本标记,但在数据的开始和结尾文本标记必须一致。 ? 比如这样,输入xcy表示结束。...可以在一条命令中使用多条管道,可以持续的将命令的输出通过管道传给其他命令来细化操作。
数量限定 数量限定符号有 *: 出现 0 次或多次 +: 出现 1 次或多次 ?: 出现 0 次或 1 次 如果在一个模式中不加数量限定符则表示出现一次且仅出现一次。...如果要表示其他次数可以使用: {m}: 出现 m 次 {m,}: 至少出现 m 次 {m,n}: 出现 m 到 n 次 {,n}: 出现 0 到 n 次 范围和优先级 () 圆括号可以用来定义模式字符串的范围和优先级...非贪婪模式尽可能少的匹配所搜索的字符串,而默认的贪婪模式则尽可能多的匹配所搜索的字符串 [xyz] 字符集合(character class),匹配所包含的任意一个字符 [^xyz] 排除型(negate...)字符集合,匹配未列出的任意字符 基本正则(BRE) 和 扩展正则(ERE) 基本正则只支持 * 数量限定,如果不使用扩展正则,想使用其他数量限定,则必须使用 \ 来转义。...基本正则不支持 \w,\d 等,需要使用 [a-zA-Z0-9_-] 和 [0-9] 代替。 sed sed(stream editor),流编辑器,用程序的方式来编辑文本。
在正则中英文的 * 它代表出现 0 到多次 + 表示出现 1 到多次 ? 表示 0 到 1 次,而 {m,n} 可以表示 m 到 n 次。...来表示它出现 0 次或 1 次,在这里就可以表示 User 这个字段存在和不存在两种情况。...A 和 \Z 它匹配整个字符串的开始和结束而不是每行的首尾;与 \A 不同的是脱字符可以匹配任意行的开头而不是整个文本的开头。...下图就是利用环视来提取出左边是标签右边是标签的字符。子组们再来了解一下正则中的子组,它的功能是将正则分成若干个小组用扩号来扩起来,那么将正则保存成一个子组。...子组可以用来表示某个部分的内容在后面重复出现或者是对某个部分的内容进行替换。另外,正则匹配的时候我们还可以指定 flag,比如用点可以匹配所有字符,包括换行多行的匹配模式或者是大小写不敏感的匹配模式。
对于使用了非空约束的字段,如果用户在添加数据时没有指定值,数据库系统会报错。 字段名 数据类型 NOT NULL 使用唯一性约束 唯一性约束要求该列唯一,允许为空,但只能出现一个空值。...字段名 数据类型 DEFAULT 默认值 设置表的属性值自动增加 在数据库应用中,可以通过为表的主键添加 AUTO_INCREMENT关键字来实现:当每新增加一条记录,使该主键自动加一。...查询空值 空值不同于0,也不同于空字符串。空值一般表示数据未知、不适用或将在以后添加数据。 在 SELECT语句中使用 IS NULL子句,可以查询某字段内容为空记录。...为表和字段取别名 为表取别名 表名 [AS] 表别名 为字段取别名 列名 [AS] 列别名 使用正则表达式查询 MYSQL中使用 REGEXP关键字指定正则表达式的字符匹配模式。...|匹配任何单子符| |*|匹配零个或多个在他前面的字符| |+|匹配前面的字符1次或多次| ||匹配保护指定的字符串的文本| |[字符集合]|匹配字符集合中的任何一个字符| |[^]|匹配不在括号中的任何字符
合并 list.sort()排序 list.reverse()元素顺序反转 list[1:]片段操作符,用于子list的提取 [1,2...反射就是把你的导入工作当作字符串。 反射:用于开发大型程序,随时可以切换数据库的时候。设计模式里面的工厂模式需要用到这个。降低程序的耦合。...属于类的字段称为静态字段。通过self调用的称为动态字段(比如说:在__init__中调用的字段)。 类不能直接访问对象的属性,对象可以直接访问类的属性。..._class__privateFunctionName() 私有字段 在类中定义了私有字段,外部是不能访问的,只能通过在内部定义函数访问这个私有字段,外部调用该函数间接的访问该私有字段。...也可以使用Value和Array 进程池:通过Pool创建多进程。
领取专属 10元无门槛券
手把手带您无忧上云