shell-脚本-字符串切片

shell脚本:从键盘输入字符串后倒序输出 前言:此篇为如何用shell脚本来达到从键盘输入字符串可倒序输出的效果。不借用rev命令实现。方法一:#!/bin/bash #by Anasta in 1.0-2018.5.3 #使用read读入一段字符串,最后以倒序的方式打印出这一段字符串 echo "\033[47mQuit program when input is empty.\033[0m"    # 前面的“\033[47m”和后... 阅读详情

字符串切片

  • ${#var} : 返回字符串变量var的长度
[root@centos6 ~]# alpha=`echo {a..z} |tr -d " "`  \\创建一个变量将26个字母赋值进去,并且不要空格
[root@centos6 ~]# echo $alpha
abcdefghijklmnopqrstuvwxyz
[root@centos6 ~]# echo ${#alpha}  \\查看变量的字符有多少个
26
  • ${var:offset}:返回字符串变量var中从第offset个字符后(不包括第offset个字符)的字符开始,到最后的部分,offset的取值在0到${#var}-1之间(bash4.2后,允许为负值)
[root@centos6 ~]# echo ${alpha:3} //跳过前3个显示后面全部
defghijklmnopqrstuvwxyz
  • ${var:offset:number}:返回字符串变量var中从第offset个字符后(不包括第offset个字符)的字符开始,长度为number的部分
[root@centos6 ~]# echo ${alpha:3:4}   \\跳过3个取4个
defg
  • ${var: -length}:取字符串的最右侧几个字符
    • 注意:冒号后必须有一个空白字符
[root@centos6 ~]# echo ${alpha: -3}
xyz
  • ${var:offset:-length}: 从最左侧跳过offset字符,一直向右取到距离最右侧length个字符之前的内容
[root@centos6 ~]# echo ${alpha:3:-4}   //centos6不支持这种写法
-bash: -4: substring expression < 0
[root@centos7 ~]# echo ${alpha:3:-4}  //7上是可以的,取前3个到倒数第4个之间的
defghijklmnopqrstuv
  • ${var: -length:-offset}:先从最右侧向左取到length个字符开始,在向右取到距离最右侧offset个字符之间的内容
    • 注意:-length前的空格
[root@centos7 ~]# echo ${alpha: -3:-2}  \\取倒数3个但是最后又2个不要
x
[root@centos7 ~]# echo ${alpha: -5:-2}  \\前面的数字一定要比后面的数字大
vwx

字符串处理

  • 基于模式取子符串
    • ${var#*word}:其中word可以是指定任意字符
    • 功能:自左向右,查找var变量所存储的字符串中,第一次出现的word,删除字符串开头至第一次出现word字符之间的所有字符
      bash
      [root@centos7 ~]# echo ${alpha#*v}
      wxyz
      [root@centos7 ~]# echo ${alpha#*w}
      xyz
      [root@centos7 ~]# line=`getent passwd root`
      [root@centos7 ~]# echo $line
      root:x:0:0:root:/root:/bin/bash
      [root@centos7 ~]# echo ${line#*root}
      :x:0:0:root:/root:/bin/bash
    • ${var##*word}:同上,贪婪模式,不同的是,删除的是字符串开头至最后一次由work指定的字符之间的所有内容
      bash
      [root@centos7 ~]# echo ${line##*root}
      :/bin/bash

      示列
file="var/log/messages“
${file#*/}: log/messages
${file##*/}: messages
  • ${var%word*}:其中word可以是指定的任意字符;
    • 功能:自右而左,查找var变量所存储的字符串中,第一次出现的word,删除字符串最后一个字符向左至第一次出现word字符之间的所有字符
      bash
      [root@centos7 ~]# echo ${line%root*}
      root:x:0:0:root:/
  • ${var%%word*}:同上,只不过删除字符串最右侧的字符向左直至最后一次出现word字符之间的所有字符

    [root@centos7 ~]# echo ${line%%root*}
    

    示列

url=http://www.magedu.com:80
${url##*:} 80
${url%%:*} http

查找替换

  • ${var/pattern/substr}:查找var所表示的字符串中,第一次被pattern所匹配到的字符串,以substr替换之
[root@centos7 ~]# echo ${line/root/admin}
admin:x:0:0:root:/root:/bin/bash
  • ${var//pattern/substr}:查找var所表示的字符串中,所有能被pattern所匹配到的字符串,以substr替换之
[root@centos7 ~]# echo ${line//root/admin}
admin:x:0:0:admin:/admin:/bin/bash
  • ${var/#pattern/substr}:查找var所表示的字符串中,行首被pattern所匹配到的字符串,以substr替换之
[root@centos7 ~]# echo ${line/#root/admin}
admin:x:0:0:root:/root:/bin/bash
  • ${var/%pattern/substr}:查找var所表示的字符串中,行尾被pattern所匹配到的字符串,以substr替换之
[root@centos7 ~]# echo ${line/%bash/admin}
root:x:0:0:root:/root:/bin/admin

查找并删除

  • ${var/pattern}:删除var所表示的字符串中第一次被pattern所匹配到的字符串
[root@centos7 ~]# echo ${line/root}
:x:0:0:root:/root:/bin/bash
[root@centos7 ~]# echo ${line/root/}   //查找替换也可以就是查找用空代替
:x:0:0:root:/root:/bin/bash
  • ${var//pattern}:删除var所表示的字符串中所有被pattern所匹配到的字符串
[root@centos7 ~]# echo ${line//root}
:x:0:0::/:/bin/bash
  • ${var/#pattern}:删除var所表示的字符串中所有以pattern为行首所匹配到的字符串
[root@centos7 ~]# echo ${line/#root}
:x:0:0:root:/root:/bin/bash
  • ${var/%pattern}:删除var所表示的字符串中有所以pattern为行尾所匹配到的字符串
[root@centos7 ~]# echo ${line/#root}
:x:0:0:root:/root:/bin/bash

字符大小写转换

  • ${var^^}:把var中的所有小写字母转换为大写
[root@centos7 ~]# echo ${line^^}
ROOT:X:0:0:ROOT:/ROOT:/BIN/BASH
[root@centos7 ~]# echo ${line}   //但是变量里是没有变的只是显示变了
root:x:0:0:root:/root:/bin/bash
  • ${var,,}:把var中的所有大写字母转换为小写

变量赋值

  • mark
  • var是一个变量,str也是一个变量,expr是一个表达式,可以是字符串,这里表达的意思是当str在没有定义或定义为空或定义了,对var变量的影响
[root@centos7 ~]# var=${line-"haha"}  //当line有值时var的值就是line的值
[root@centos7 ~]# echo $var
root:x:0:0:root:/root:/bin/bash
[root@centos7 ~]# line=""
[root@centos7 ~]# var=${line-"haha"}  //当line的值为空时var的值就是line的值
[root@centos7 ~]# echo $var         

[root@centos7 ~]# unset line
[root@centos7 ~]# var=${line-"haha"}   //当line没有定义时var的值就是haha
[root@centos7 ~]# echo $var         
haha

高级变量用法-有类型变量


  • shell变量一般是无类型的,但是bash shell提供了declare和typeset(将要淘汰)两个命令用于指定变量的类型,两个命令是等价的
  • bash不支持浮点数就是小数点

declare [选项] 变量名
-r 声明或显示只读变量
-i 将变量定义为整型数
-a 将变量定义为数组
-A 将变量定义为关联数组
-f 显示已定义的所有函数名及其内容
-F 仅显示已定义的所有函数名
-x 声明或显示环境变量和函数
-l 声明变量为小写字母 declare  -l var=UUPER

SAP-ABAP:SAP创建CDS视图(SQL语句创建)实例详解 通过Eclipse和ADT创建CDS视图是SAP开发中的一项重要技能。CDS视图不仅简化了数据建模,还提供了高性能和灵活性。掌握CDS视图的开发和使用,可以帮助你更好地支持SAP S/4HANA和Fiori应用的开发。 阅读详情

相关推荐

别再搞混了!MATLAB通信仿真中EbN0转SNR的保姆级公式推导与避坑指南

本文深入解析MATLAB通信仿真中EbN0与SNR转换的核心公式,揭示数字仿真与理论系统的关键差异。通过真实案例展示错误参数设置导致的隐蔽问题,并提供完整的参数自查清单和正确实现代码,帮助工程师和学生避免常见错误,确保仿真结果准确可靠。

weixin_28746223的博客 348

shell 中针对字符串(变量)的切片,截取,替换,删除,大小写转换操作

切片 #返回字符串变量var的长度 ${#var} [root@rocos(17:49:27) ~]# str=abcdef你我他 [root@rocos(17:49:40) ~]# echo ${#str} 9 #返回字符串变量var中从第offset个字符后(不包括第offset个字符)的字符开始,到最后的部分,offset的取值在0 到 ${#var}-1 之间(bash4.2后,允许为负值) ${var:offset} [root@rocos(17:49:51) ~]# echo ${str:2

rockstics的博客 2070

西安交通大学SQ轴承数据集(文末附数据)

西安交通大学SQ轴承数据集

qq_43271683的博客 1万+

【shell】shell字符串分割|文件分割|剪切|截取

目录 一、字符串分割 1、awk分割 2、利用shell 中 变量 的字符串替换成空格分割 3、设置分隔符,通过 IFS 变量 4、利用tr 指令实现字符替换 二、文件分割 附录 【转】linux下awk内置函数的使用(split/substr/length) 四、gsub函数 五、正则表达式 一、字符串分割 1、awk分割 把 ceph_12.2.1.centos.x86_64.tar.gz-2021-10-08-08后面的2021-10-08-08按“-”分割,取最后一个数..

我的笔记本 10万+

LVGL字体优化实战:如何将中文字库放到外部SPI Flash并动态加载(节省内部RAM)

本文详细介绍了LVGL在嵌入式UI开发中如何通过外部SPI Flash存储中文字库并动态加载,以节省内部RAM资源。通过对比不同存储介质和字库格式,提供多种实现方案及性能优化技巧,帮助开发者在资源受限设备上实现高效的中文显示。

weixin_28693683的博客 344

【LCMM实战指南】从增长混合模型到潜在类别轨迹分析的纵向数据建模

本文深入解析了LCMM(潜在类别混合模型)在纵向数据建模中的应用,对比了LCGA与GMM的核心差异与选择策略。通过R语言lcmm包的实战演练,详细展示了从数据模拟、模型拟合、类别数选择到结果解读的全流程,为识别数据中不同的发展轨迹亚型提供了系统指南。

weixin_29070861的博客 380

Shell 中实现字符串切割的几种方法

1、利用shell 中 变量 的字符串替换 1)将字符串安逗号切分并且组成一个新数组 #!/bin/bash string=“hello,shell,split,test” array=(${string//,/ }) for var in ${array[@]} do echo $var done 2) 将字符串安位数切分成一个新的串 #!/bin/bash string="hello...

weixin_40809627的博客 1万+

奈曼-皮尔逊准则

奈曼-皮尔逊准则 如果各个假设的先验概率P(Hi)(i=0,1)P(H_i)(i=0,1)P(Hi​)(i=0,1)已知,并且每种判决的代价函数已知,这时,可以用贝叶斯准则进行判决。 如果进一步假设正确判决不付出的代价,而错误判决代价相同,即c00=c11=0,c01=c10=1c_{00}=c_{11}=0,c_{01}=c_{10}=1c00​=c11​=0,c01​=c10​=1,这时可以用最小平均错误概率准则进行判决。 在不知道先验概率P(Hi)(i=0,1)P(H_i)(i=0,1)P(Hi​)(

little_soldier的专栏 1万+

【shell】字符串截取&替换&分割

shell字符串输出、截取、分割、替换。

Luna_A的博客 2万+

ArcGIS Pro 拓扑编辑实战:从‘地图拓扑’到‘共享编辑’,手把手教你批量修改要素

本文详细介绍了ArcGIS Pro中的拓扑编辑功能,从地图拓扑配置到共享编辑技巧,手把手教你如何批量修改要素。通过实战案例展示拓扑编辑在城市规划、地籍管理等场景中的应用,显著提升编辑效率并减少拓扑错误,是现代GIS技术的重要生产力工具。

weixin_30500473的博客 505

基于Python爬虫+词云图+情感分析对某东上完美日记的用户评论分析

随着互联网和社交媒体的发展,用户评论成为了消费者表达自己意见和情感的主要途径之一。对于企业来说,深入了解用户对其产品或服务的看法可以帮助他们更好地了解市场需求、产品改进的方向,以及消费者的情感倾向。因此,对用户评论进行分析已经成为了市场研究和商业决策的重要手段之一。

m0_64336780的博客 1万+

shell脚本切割字符串、分割字符串(split)

用下面这个脚本就能将外网ip提取出来。分割,获取后面的ip地址。

Dontla的博客 1万+

6、哈代空间、算子函数及相关概念解析

本文深入探讨了数学中哈代空间与算子函数的核心概念,包括强函数的因式分解、半单零点的定义与性质、Blaschke-Potapov乘积的存在性、Nagy-Foias模型算子的结构与谱分析、可数集合的相关性质(如Carlesonian集合、稀有集合等)、简单分式族的可分性与基性质,以及指数型整函数的增长特性。文章还分析了这些数学对象之间的内在联系,并通过图表与表格形式直观呈现了集合性质与函数空间结构的关系。这些理论不仅在数学分析和泛函分析中具有重要意义,也在信号处理、量子力学等应用领域具有广泛价值。

yhn4567890的博客 170

shell:脚本数组list定义、长度获取、循环打印、数组切片、字符串转换

【代码】shell:脚本数组list的操作整理。

彭世瑜的博客 3468

华为的C语言编程规范.pdf

华为技术有限公司内部技术规范。本规范制定了编写C语言程序的基本原则、规则和建议。从代码的清晰、简洁、可测试、安全、程序效率、可移植各个方面对C语言编程作出了具体指导。

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

Shell脚本数组字符串切片示例

Shell脚本数组字符串切片示例

Leon_Jinhai_Sun的博客 244

深度学习工具包 DeepLearningToolbox

深度学习工具包Deprecation notice.-----This toolbox is outdated and no longer maintained.There are much better tools available for deep learning than this toolbox, e.g. [Theano](http://deeplearning.net/software/theano/), [torch](http://torch.ch/) or [tensorflow](http://www.tensorflow.org/)I would suggest you use one of the tools mentioned above rather than use this toolbox.Best, Rasmus.DeepLearnToolbox================A Matlab toolbox for Deep Learning.Deep Learning is a new subfield of machine learning that focuses on learning deep hierarchical models of data.It is inspired by the human brain's apparent deep (layered, hierarchical) architecture.A good overview of the theory of Deep Learning theory is[Learning Deep Architectures for AI](http://www.iro.umontreal.ca/~bengioy/papers/ftml_book.pdf)For a more informal introduction, see the following videos by Geoffrey Hinton and Andrew Ng.* [The Next Generation of Neural Networks](http://www.youtube.com/watch?v=AyzOUbkUf3M) (Hinton, 2007)* [Recent Developments in Deep Learning](http://www.youtube.com/watch?v=VdIURAu1-aU) (Hinton, 2010)* [Unsupervised Feature Learning and Deep Learning](http://www.youtube.com/watch?v=ZmNOAtZIgIk) (Ng, 2011)If you use this toolbox in your research please cite [Prediction as a candidate for learning deep hierarchical models of data](http://www2.imm.dtu.dk/pubdb/views/publication_details.php?id=6284)```@MASTERSTHESIS\{IMM2012-06284, author = "R. B. Palm", title = "Prediction as a candidate for learning deep hierarchical models of data", year = "2012",}```Contact: rasmusbergpalm at gmail dot comDirectories included in the toolbox-----------------------------------`NN/` - A library for Feedforward Backpropagation Neural Networks`CNN/` - A library for Convolutional Neural Networks`DBN/` - A library for Deep Belief Networks`SAE/` - A library for Stacked Auto-Encoders`CAE/` - A library for Convolutional Auto-Encoders`util/` - Utility functions used by the libraries`data/` - Data used by the examples`tests/` - unit tests to verify toolbox is workingFor references on each library check REFS.mdSetup-----1. Download.2. addpath(genpath('DeepLearnToolbox'));Example: Deep Belief Network---------------------```matlabfunction test_example_DBNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit RBM and visualize its weightsrand('state',0)dbn.sizes = [100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);figure; visualize(dbn.rbm{1}.W'); % Visualize the RBM weights%% ex2 train a 100-100 hidden unit DBN and use its weights to initialize a NNrand('state',0)%train dbndbn.sizes = [100 100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);%unfold dbn to nnnn = dbnunfoldtonn(dbn, 10);nn.activation_function = 'sigm';%train nnopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.10, 'Too big error');```Example: Stacked Auto-Encoders---------------------```matlabfunction test_example_SAEload mnist_uint8;train_x = double(train_x)/255;test_x = double(test_x)/255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit SDAE and use it to initialize a FFNN% Setup and train a stacked denoising autoencoder (SDAE)rand('state',0)sae = saesetup([784 100]);sae.ae{1}.activation_function = 'sigm';sae.ae{1}.learningRate = 1;sae.ae{1}.inputZeroMaskedFraction = 0.5;opts.numepochs = 1;opts.batchsize = 100;sae = saetrain(sae, train_x, opts);visualize(sae.ae{1}.W{1}(:,2:end)')% Use the SDAE to initialize a FFNNnn = nnsetup([784 100 10]);nn.activation_function = 'sigm';nn.learningRate = 1;nn.W{1} = sae.ae{1}.W{1};% Train the FFNNopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.16, 'Too big error');```Example: Convolutional Neural Nets---------------------```matlabfunction test_example_CNNload mnist_uint8;train_x = double(reshape(train_x',28,28,60000))/255;test_x = double(reshape(test_x',28,28,10000))/255;train_y = double(train_y');test_y = double(test_y');%% ex1 Train a 6c-2s-12c-2s Convolutional neural network %will run 1 epoch in about 200 second and get around 11% error. %With 100 epochs you'll get around 1.2% errorrand('state',0)cnn.layers = { struct('type', 'i') %input layer struct('type', 'c', 'outputmaps', 6, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %sub sampling layer struct('type', 'c', 'outputmaps', 12, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %subsampling layer};cnn = cnnsetup(cnn, train_x, train_y);opts.alpha = 1;opts.batchsize = 50;opts.numepochs = 1;cnn = cnntrain(cnn, train_x, train_y, opts);[er, bad] = cnntest(cnn, test_x, test_y);%plot mean squared errorfigure; plot(cnn.rL);assert(er<0.12, 'Too big error');```Example: Neural Networks---------------------```matlabfunction test_example_NNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);% normalize[train_x, mu, sigma] = zscore(train_x);test_x = normalize(test_x, mu, sigma);%% ex1 vanilla neural netrand('state',0)nn = nnsetup([784 100 10]);opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samples[nn, L] = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.08, 'Too big error');%% ex2 neural net with L2 weight decayrand('state',0)nn = nnsetup([784 100 10]);nn.weightPenaltyL2 = 1e-4; % L2 weight decayopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex3 neural net with dropoutrand('state',0)nn = nnsetup([784 100 10]);nn.dropoutFraction = 0.5; % Dropout fraction opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex4 neural net with sigmoid activation functionrand('state',0)nn = nnsetup([784 100 10]);nn.activation_function = 'sigm'; % Sigmoid activation functionnn.learningRate = 1; % Sigm require a lower learning rateopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex5 plotting functionalityrand('state',0)nn = nnsetup([784 20 10]);opts.numepochs = 5; % Number of full sweeps through datann.output = 'softmax'; % use softmax outputopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex6 neural net with sigmoid activation and plotting of validation and training error% split training data into training and validation datavx = train_x(1:10000,:);tx = train_x(10001:end,:);vy = train_y(1:10000,:);ty = train_y(10001:end,:);rand('state',0)nn = nnsetup([784 20 10]); nn.output = 'softmax'; % use softmax outputopts.numepochs = 5; % Number of full sweeps through dataopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, tx, ty, opts, vx, vy); % nntrain takes validation set as last two arguments (optionally)[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');```[![Bitdeli Badge](https://d2weczhvl823v0.cloudfront.net/rasmusbergpalm/deeplearntoolbox/trend.png)](https://bitdeli.com/free "Bitdeli Badge")

Shell脚本编程之字符串切片

1. 字符串切片 1.1. 字符串切片 格式 说明 ${#var} 返回字符串变量var的长度(字符)。 ${var:offset} 返回字符串变量var中从第offset个字符后面(不包括第offset个字符)的字符开始,到最后的部分。注意:offset 的取值在0 到 ${#var}-1 之间(bash4.2后,允许为负值)。 ${var:offset:number} 返...

weixin_30701575的博客 264

温度PID控制PLC程序

温度PID稳定控制程序,适用于欧姆龙PLC,对其他PLC也具有很大参考价值

(4)shell脚本编程进阶之数组、字符串切片

(一)数组定义 数组:存储多个元素的连续的内存空间,相当于多个变量的集合 数组名和索引 索引:编号从0 开始,属于数值索引 注意:索引可支持使用自定义的格式,而不仅是数值格式,即为关联索引, ,bash4.0版本之后开始支持 bash 的数组支持稀疏格式(索引不连续) 声明数组: declare -a ARRAY_NAME declare -A ARRA...

南风依旧 839

shell脚本_永久环境变量和字符串操作

在本篇中,我们探讨了设置永久环境变量的常见方法,并且详细介绍了如何通过编辑 shell 配置文件来实现变量的持久化。环境变量的配置不仅仅是为了简化脚本执行,还能让不同程序和工具之间相互配合,提高开发效率。

星海幻影的博客 1513

二、shell变量内容的删除、替换、切片

shell变量内容的删除、替换、切片 目录shell变量内容的删除、替换、切片变量内容的删除一、变量内容删除,从左向右删除1.显示变量的字符长度2.${变量名#*匹配的内容}:删除某个变量中匹配的内容3.${变量名##*匹配的内容} :贪婪删除变量中匹配的内容二、变量内容删除,从右向左删除变量索引切片1.切出www2.切出baidu.com变量值的替换 变量内容的删除 一、变量内容删除,从左向右删除 ${#…} 从左向右删除 ${…#…} 最短匹配删除 ${…##…} 贪婪匹配删除 ${#变量名}:查看变量

北海牧野 2499

Shell 编程快速入门 之 字符串

在计算机编程中,字符串(String)是一种基本的数据类型,它表示文本或字符序列。在各种编程语言中,字符串都扮演着重要的角色,而在shell脚本中也不例外。在Shell脚本中,字符串的使用非常广泛,可以用于处理文本、文件名、命令参数等等。

汉阳Hann's Home 1232

Shell脚本入门(二)--- 切片、匹配、条件测试、字符串数值比较、交互语句

云计算学习day22 文章目录云计算学习day22@[toc]自定义变量 自定义切片 调取值变量替换从前往后最短匹配最长匹配(贪婪匹配)shell条件测试文件测试(操作符 文件或者目录)【方括号两端必须加空格】【! 表取反】【 -d 查询操作符 】数值比较[ 整数1 操作符 整数2]字符串比较创建文件 【 -f 查询文件 sleep 休息几秒】判断ip是否连通判断用户并创建自动化修改密码自行添加用户及密码 【for循环 i赋值1-10 】互动安装httpd测试本网段内的机器存活情况,将所有在

Neko的博客 322

22. shell当中字符处理,字符串切片,基于偏移量取字符串,基于模式取子串,查找替换,查找并删除,字符大小写转换

字符串处理 字符串切片 基于偏移量取字符串 #返回字符串变量var的长度 ${#var} #返回字符串变量var中从第offset个字符后(不包括第offset个字符)的字符开始,到最后的部分,offset的取值在0 到 ${#var}-1 之间(bash4.2后,允许为负值) ${var:offset} #返回字符串变量var中从第offset个字符后(不包括第offset个字符)的字符开始,长度为number的部分 ${var:offset:number} #取字符串的最右侧几个字符,取字符

Oracle/MySQL 到 国产信创数据库|迁移 · 调优 · 信创替换 1276

数组及字符串切片

在Shell脚本程序中,有时会使用数组,也就是具有相同数据类型的数据的集合。一般来说数组分为两类:索引数组和关联数组。下面请看示例:   1)arr_num=(1 2 3 4 5);   2)arr_string=("abcd" "uhfjs" "qwer")或arr_string=('abcd' 'uhfjs' 'qwer') 其中,1)为数值型数组,2)为字符串型数组;这些都是...

angshangteng1806的博客 150

Bash Shell编程----Shell中的数组与字符串

Shell中的数组 数组的定义: 在 Shell 中,用括号来表示数组,数组元素用"空格"符号分割开。 例,array=(java spring python shell linux sql "spring boot") 若是元素内也有空格,则必须使用引号 数组的赋值: 直接赋值:array=(java spring python shel...

wuud__的博客 1198

shell字符串处理

字符串切片操作 shell字符串切片操作与数据组元素字符切片操作基本相同,在shell中处理字符串要注意以下几点: 1. shell中的字符串处理操作与Python的处理机制很相似,Python中的切片操作支持步长切片和逆序显示。 2. 汉字占一个字符 2. 字符串切片操作同样基于索引机制 3. 索引编号:从左到右元素字符串起始偏移量编号为0;从右到从元素字符串起始偏移量编号为-1 4. ...

houzhihui的博客 161

Shell脚本编程——字符串变量处理

以下内容转载自http://183530300.blog.51cto.com/894387/1841659相信正在脚本之路上狂奔的同学们,都能感觉到脚本中需要应用变量的地方非常广泛,简单来看变量也只不过就是:var=value;如果我们深入其 中,也能发现变量里面的学问其实也挺深的,今天就给大家分享一下这个小小的变量里面到底有多少的学问吧。Shell变量一般是无类型的,但是b...

weixin_34239592的博客 183
上一篇: SElinux
下一篇: Linux日志管理实验
ITlinuxP
博客等级 码龄9年 56粉丝 28原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值