linux中截取字段与#、$区别

1.Linux shell 截取字符变量的前8位


实现方法有以下几种:

css

  1. expr substr “$a” 1 8
  2. echo $a|awk ‘{print substr(,1,8)}’
  3. echo $a|cut -c1-8
  4. echo $
  5. expr $a : ‘\(.\\).*’
  6. echo $a|dd bs=1 count=8 2>/dev/null

 

2.按指定的字符串截取


(1)第一种方法:

从左向右截取最后一个string后的字符串
${varible##*string}
从左向右截取第一个string后的字符串
${varible#*string}
从右向左截取最后一个string后的字符串
${varible%%string*}
从右向左截取第一个string后的字符串
${varible%string*}
“*”只是一个通配符能够不要

请看下面的例子:

html

$ MYVAR=foodforthought.jpg
$ echo ${MYVAR##*fo}
rthought.jpg
$ echo ${MYVAR#*fo}
odforthought.jpg


(2)第二种方法:

${varible:n1:n2}:截取变量varible从n1开始的n2个字符,组成一个子字符串。能够根据特定字符偏移和长度,使用另外一种形式的变量扩展,来选择特定子字符串。试着在 bash 中输入如下行:

正则表达式

$ EXCLAIM=cowabunga
$ echo ${EXCLAIM:0:3}
cow
$ echo ${EXCLAIM:3:7}
abunga


这种形式的字符串截断很是简便,只需用冒号分开来指定起始字符和子字符串长度。

shell

3.按照指定要求分割:


好比获取后缀名bash

ls -al | cut -d “.” -f2

小结:shell对应字符串的处理方法不少,根据需求灵活选择。post

 

在作shell批处理程序时候,常常会涉及到字符串相关操做。有不少命令语句,如:awk,sed均可以作字符串各类操做。 其实shell内置一系列操做符号,能够达到相似效果,你们知道,使用内部操做符会省略启动外部程序等时间,所以速度会很是的快。url

一 语法spa

1
2
3
4
cut  [选项] 文件名
选项:
-f 列号:提取第几列
-d 分隔符:按照指定分隔符分割列

[[    $name =~  xx ]];thencode

xxhtm

Linux的#和$区别

 

【#】表明 root权限
【$】表明普通用户

$@:表示全部脚本参数的内容

$#:表示返回全部脚本参数的个数。

 $# 是传给脚本的参数个数

$ 0  是脚本自己的名字
$ 1  是传递给该shell脚本的第一个参数
$ 2  是传递给该shell脚本的第二个参数
$@ 是传给脚本的全部参数的列表
$* 是以一个单字符串显示全部向脚本传递的参数,与位置变量不一样,参数可超过 9
$$ 是脚本运行的当前进程ID号
$? 是显示最后命令的退出状态, 0 表示没有错误,其余表示有错误

示例:编写以下shell脚本,保存为test.sh

#!/bin/sh

echo "number:$#"

echo "argume:$@"

执行脚本:

./test.sh first_arg second_arg

 

 

1、判断读取字符串值

表达式 含义
${var} 变量var的值, 与$var相同
   
${var-DEFAULT} 若是var没有被声明, 那么就以$DEFAULT做为其值 *
${var:-DEFAULT} 若是var没有被声明, 或者其值为空, 那么就以$DEFAULT做为其值 *
   
${var=DEFAULT} 若是var没有被声明, 那么就以$DEFAULT做为其值 *
${var:=DEFAULT} 若是var没有被声明, 或者其值为空, 那么就以$DEFAULT做为其值 *
   
${var+OTHER} 若是var声明了, 那么其值就是$OTHER, 不然就为null字符串
${var:+OTHER} 若是var被设置了, 那么其值就是$OTHER, 不然就为null字符串
   
${var?ERR_MSG} 若是var没被声明, 那么就打印$ERR_MSG *
${var:?ERR_MSG} 若是var没被设置, 那么就打印$ERR_MSG *
   
${!varprefix*} 匹配以前全部以varprefix开头进行声明的变量
${!varprefix@} 匹配以前全部以varprefix开头进行声明的变量

加入了“*”  不是意思是: 固然, 若是变量var已经被设置的话, 那么其值就是$var.

 

2、字符串操做(长度,读取,替换)

表达式 含义
${#string} $string的长度
   
${string:position} 在$string中, 从位置$position开始提取子串
${string:position:length} 在$string中, 从位置$position开始提取长度为$length的子串
   
${string#substring} 从变量$string的开头, 删除最短匹配$substring的子串
${string##substring} 从变量$string的开头, 删除最长匹配$substring的子串
${string%substring} 从变量$string的结尾, 删除最短匹配$substring的子串
${string%%substring} 从变量$string的结尾, 删除最长匹配$substring的子串
   
${string/substring/replacement} 使用$replacement, 来代替第一个匹配的$substring
${string//substring/replacement} 使用$replacement, 代替全部匹配的$substring
${string/#substring/replacement} 若是$string的前缀匹配$substring, 那么就用$replacement来代替匹配到的$substring
${string/%substring/replacement} 若是$string的后缀匹配$substring, 那么就用$replacement来代替匹配到的$substring
   

说明:"* $substring”能够是一个正则表达式.

相关文章
相关标签/搜索