首页 > 系统相关 >Shell(3):字符串

Shell(3):字符串

时间:2023-08-08 10:15:00浏览次数:36  
标签:字符 分割 Shell 匹配 cut 分隔符 字符串

1、单双引号

单引号:原样输出写的内容,没有变量和转义;

双引号:其中存在变量转义;

 

说明

字符串串首空格显示时会被屏蔽,但是在统计长度后续一系列有关字符串的方法时都会计入

2、字符串拼接

用法:$a$b

例子

a="chuan"
b="chuan"
c=" $a$b"
echo $c

chuanchuan

3、字符串长度

用法:${#变量名}

例子:

a="chuan"
b="chuan"
c=" $a$b"
echo $c
echo ${#c}

11

4、切片

用法:${变量名:起:数}

说明:从起始位置(包含,从0开始)开始,截取指定数量的字符

例子:

c=" aabb"
echo $c
echo ${a:1:3}

aab

注意这里,虽然串首的空格不会被显示,但是在统计时依然会计入

5、字符串运算符

运算符

说明

例子

注意①[ ]左右表达式之间的空格

②表达式 与 运算符之间的空格

= 两个字符串是否相等,是则返回true [ $a = $b ]
!= 两个字符串是否相等,否则返回true [ $a != $b ]
-z 字符串长是否为0,是则返回true [ -z $a ]
-n 字符串长是否为0,否则返回true [ -n $a ] 

str

(无运算符)

字符串是否为空,不为空则返回true [ $a ]

包含:~与!~,字符串是否包含子串

例子:字符串变量A是否包含子串abc?是返回1,否返回0

r=A~"abc"
if(r==0)print "true"
else print "false"

6、正则表达式

元字符

说明

例子

\ 转义符,将特殊字符转为一般字符 a\.b 只能匹配 a.b
^ 匹配开头 ^tux 匹配以tux开头的行
$ 匹配结尾 tux$ 匹配以tux结尾的行
. 除换行符\n外的任意单个字符 ab.匹配任意ab+单字符
[ ] 匹配[ ]中的任意单字符
coo[kl]匹配cook和cool
[^] 匹配除了[^ ]列出的单字符 123[^45]匹配123x,x是除了4和5外的其他任意字符
[-] 匹配某个范围内的字符(必须递增) [0-9]可以匹配0-9的任意单个数字
? 匹配之前的项0或1次 colou?r可以匹配0或1次u,即color或colour
+ 匹配之前的项1或多次 sa-6+可以匹配多个6,即sa-6、sa-666
* 匹配之前的项人一次 co*l可以匹配任意个o,即col、cool、coool
() 匹配某个子串 ma(trix)?可以匹配matrix和ma
{n} 匹配之前的项n次 [0-9]{3}可以匹配任意三位数
{n,} 至少匹配之前的项n次 [0-9]{2,}匹配一个两位或以上的数
+n,m} 最少匹配n次,最多匹配m次 [0-9]{2,5}匹配一个2至5位数
| ab(c|d)匹配c或d,即abc和abd均可

 

7、cut:列提取

用法

cut [选项] 文件名

选项

选项

说明

-f

列号;提取第几列

多列用逗号,分隔,如cut -f 2,3

-d 分隔符;以指定分隔符分割列
-n 取消分割多字节字符
-c

字符范围();不依赖分隔符来区分列,而是通过字符范围(从第几个字符开始分割)进行字符提取:

n-:从第n个字符到行尾;

n-m:从第n到第m个字符;

-m:从第一个到第m个字符;

--complement 补全被选择的字符或字段
--out-delimiter 输出内容为字段分隔符

说明:

  • 默认分隔符为制表符,即TAB

例子

  • 创建文件

[root@localhost ~]$ vi student.txt
id    name    gender    mark
1    liming    m        86
2    sc        m        67
3    tg        n        90
  • 分割

[root@localhost ~]$ vi student.txt
id    name    gender    mark
1    liming    m        86
2    sc        m        67
3    tg        n        90


[root@localhost ~]$ cut -f 2 student.txt
#提取第二列内容

[root@localhost ~]$ cut -f 2,3 student.txt
#提取第2和3列的内容
[root@localhost ~]$ cut -c 8- student.txt #每行从第八个字符开始提取到行尾,好像很乱啊,那是因为每行的字符个数不相等啊
8-:提取到行尾
8:提取第8个
-8:从行首提取到第8个 [root@localhost ~]$ cut -d ":" -f 1,3 /etc/passwd #以“:”作为分隔符,提取/etc/passwd_文件的第一列和第三列

8、split:字符串分割

用法:split(列,结果数组,分隔符)

例子:l=split($2,arr,"#")

说明:用指定分隔符对某列所有字符串进行分割,分割结果保存于结果数组中

参数:

  • $2:对哪一列进行分割;
  • arr:分割后保存而成的字符串数组;
  • "#":分隔符;写法:"分隔符",如"/",":","#"

返回值:分割成的数组长度,arr的长度,可通过arr[l]访问最后一号元素

例子:

/etc/passwd的文件组织形式如下

将文件的最后一列进行分割(/sbin/nologin),提取分割后的最后一个元素

l=split($7,arr,"/")
canlogin=arr[l]~"nologin"
if(canlogin==0)canlogin="true"
else canlogin="false"

 

 

标签:字符,分割,Shell,匹配,cut,分隔符,字符串
From: https://www.cnblogs.com/ShineLeBlog/p/17561946.html

相关文章

  • Linux jq 命令讲解与实战操作(json字符串解析工具)
    目录一、概述二、jq命令安装三、jq命令语法与示例详解1)基本用法2)常用选项3)查询和过滤1、选择字段2、过滤3、遍历数组4、组合操作4)修改和创建1、修改字段值:2、创建新字段:3、组合操作:4、条件修改5)运算符1、数值运算2、比较运算:3、逻辑运算:4、条件运算:6)变量和条件1、使用变量:2、条......
  • Microsoft 365解决方案:如何通过Powershell启用Communication Sites的Rating feature
    博客链接:https://blog.51cto.com/u_13637423SharePoint中的Rating功能允许用户对列表项进行评分并提供反馈,从而增强团队内部的协作和决策能力。虽然此功能在SharePointTeamsSite中默认可用,但在CommunicationSite中默认不启用,如下所示:但如果您希望在CommunicationSite的列表中......
  • Linux常用的shell命令汇总
    本文介绍Linux系统下常用的系统级命令,包括软硬件查看、修改命令,有CPU、内存、硬盘、网络、系统管理等命令。说明命令是在Centos6.464位的虚拟机系统进行测试的。本文介绍的命令都会在此Centos下运行验证(也有部分命令会在suse/ubuntu系统里测试的,会做特明说明),但运行结果就不再列出......
  • Delphi ShellExecute为应用程序传递多个参数
    开发环境DelphiXe11.3 调用的程序  procedureTForm2.Button1Click(Sender:TObject);begin//某个参数包含空格时(用""),如下面这行;这里传递过去是3个参数ShellExecute(handle,'open',pchar('C:\Users\PC\Desktop\新建文件夹\新建文件夹\Win32\Debug\Project2.ex......
  • python re将字符串中的数字乘二
    importredefdouble(matched):value=int(matched.group('value'))returnstr(value*2)s='A23G4HFD567'print(re.sub('(?P<value>\d+)',double,s))#1.?P<value>的意思就是命名一个名字为value的组,匹配规则符合后面的/d+#......
  • 代码随想录算法训练营第十一天| 20. 有效的括号 1047. 删除字符串中的所有相邻重复项
    20.有效的括号    卡哥建议:讲完了栈实现队列,队列实现栈,接下来就是栈的经典应用了。 大家先自己思考一下 有哪些不匹配的场景,在看视频 我讲的都有哪些场景,落实到代码其实就容易很多了。   题目链接/文章讲解/视频讲解:https://programmercarl.com/0020.%E6%9C%8......
  • Xshell使用是出现全黑或全白问题
    Xshell使用是出现全黑或全白问题,这是我实际遇到的问题如图。解决方式:设置字体 解决成功:......
  • go 执行shell命令
    简单案例packagemainimport( "context" "fmt" "os/exec")var( ctx=context.Background())funcmain(){ cmd:=exec.CommandContext(ctx,"ip","a") res,err:=cmd.Output() iferr!=nil{ panic......
  • c#格式化字符串 toString()
    1、使用ToString方法的默认格式设置publicclassAutomobile{publicstringName{get;set;}="小王";}AutomobilefirstAuto=newAutomobile();Console.WriteLine(firstAuto.ToString());2、重写ToStringpublicclassAutomobile2{publicstringNam......
  • 几个代码提升shell逼格
    在Linux系统中shell命令能够高效的运行并发的处理任务,shell脚本也并不乏味,不仅有魔音还有shell的颜色显示。下面我们就用shell中的颜色来秒提高shell脚本的逼格。我们举一个例子:echo-e"\033[44;37;5m ME \033[0mCOOL"以上命令设置背景成为蓝色,前景白色,闪烁光标,输出字符“ME”,然......