(BA) SHELL 处理处理字符串的小结

6 篇文章 0 订阅

shell中处理字符串小结:

假定在shell中有这么一个字符串:x="abcd"

一、求字符串的长度

方法一
通过 expr 命令 加length参数 expr length $x,会打印出4

4

方法二 (推荐用这种。原因?你懂得……

echo ${#x}
4

方法三

expr "$x" : ".*"

4



二、查找字串
注意:返回的索引是从1开始, 失败则返回0
expr index  $x "b"

2

expr index  $x "a"

1

expr index  $x "b"

2

expr index  $x "c"

3

expr index  $x "d"

4


三、得到子字符串
方法一

# expr <string> startpos length

expr substr "$x" 1 3

abc

expr substr "$x" 1 5

abcd

expr substr "$x" 2 5

bcd


方法二

#通过这个方式 ${x:pos:lenght}


echo ${x:1}

bcd


echo ${x:2}

cd


echo ${x:0}

abcd


echo ${x:0:2}

ab

pos=1

len=2


echo ${x:$pos:$len}

bc


四、打印匹配的长度
expr match $x "."

1

expr match $x "abc"

3


expr match $x "bc"

0



五、字符串的掐头去尾
x=aabbaarealwwvvww


echo "${x%w*w}"
aabbaarealwwvv


echo "${x%%w*w}"
aabbaareal


echo "${x##a*a}"
lwwvvww


echo "${x#a*a}"
bbaarealwwvvww

我是按照下面这种记忆法:
其中 , # 表示掐头, 因为键盘上 # 在 $ 的左面。
其中 , % 表示%,  因为键盘上 % 在 $ 的右面。
单个的表示最小匹配,双个表示最大匹配。
也就是说,当匹配的有多种方案的时候,选择匹配的最大长度还是最小长度。


六、字符串的替换
x=abcdabcd


echo ${x/a/b} # 只替换一个
bbcdabcd


echo ${x//a/b} # 替换所有
bbcdbbcd


七、bash中 利用 ${ } 还可针对不同的变数状态赋值(没设定、空值、非空值)
    
${shell_var-init_value} :假如 $shell_var 沒有设定,则使用 init_value 作返回值。(空值及非空值时不作处理) 

${shell_var:-init_value} :假如 $shell_var 沒有设定或为空值,则使用 init_value 作返回值。 (非空时时不作处理)

${shell_var+init_value} :假如 $shell_var 设为空值或非空值,均使用 init_value 作返回值。(沒设定时不作处理) 

${shell_var:+init_value} :若 $shell_var 为非空值,则使用 init_value 作返回值。 (沒设定及空值时不作处理) 

${shell_var=init_value} :若 $shell_var 沒设定,则使用 init_value 作返回值,同时將 $shell_var 赋值为 init_value 。 (空值及非空值时不作处理) 

${shell_var:=init_value} :若 $shell_var 沒设定或为空值,则使用 init_value 作返回值,同时將 $shell_var 赋为 init_value 。 (非空值时不作处理) 

${shell_var?init_value} :若 $shell_var 沒设定,则將 init_value 输出至 stderr。 (空值及非空值时不作处理) 

${shell_var:?init_value} :若 $shell_var 沒设定或为空值,则將 init_value 输出至 stderr。 (非空值时不作处理)。



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
在Python中,字符串的比较大小是按照字符的ASCII码进行比较的。具体来说,比较的规则是从字符串的第一个字符开始逐个比较,如果两个字符串的第一个字符相等,则继续比较下一个字符,直到遇到第一个不同的字符为止。如果所有字符都相等,则比较字符串的长度,长度较长的字符串被认为是较大的。\[1\]\[2\]\[3\] 举个例子来说,比较字符串"abc"和"ba",首先比较第一个字符,即'a'和'b',由于'a'的ASCII码是97,而'b'的ASCII码是98,所以"a"小于"b",因此"abc"小于"ba"。同样地,比较字符串"abc"和"ab",前两个字符都相等,所以继续比较最后一个字符,即'c'和'b',由于'c'的ASCII码是99,而'b'的ASCII码是98,所以"c"大于"b",因此"abc"大于"ab"。如果两个字符串完全相等,则它们被认为是相等的。 需要注意的是,空格的ASCII码是32,而空(null)的ASCII码是0。所以在比较字符串时,空格会被认为是较小的字符。\[2\] 总结起来,Python中字符串的比较大小是按照字符的ASCII码进行比较的,从第一个字符开始逐个比较,直到遇到第一个不同的字符为止,如果所有字符都相等,则比较字符串的长度。 #### 引用[.reference_title] - *1* [【Python】字符串是如何比较大小的?](https://blog.csdn.net/qq_42951560/article/details/122799815)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control,239^v3^insert_chatgpt"}} ] [.reference_item] - *2* [python字符串比较大小](https://blog.csdn.net/qq_40803626/article/details/93405170)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control,239^v3^insert_chatgpt"}} ] [.reference_item] - *3* [python字符串比较大小列表比较大小ascii编码](https://blog.csdn.net/weixin_40981660/article/details/124088095)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值