shell脚本字符串查找
① shell脚本定位某个文件中特定位置的字符串并进行替换应该怎么写
根据位置替换即可:
readip
sed-ri"/subnet/s/(subnet)[^]+(netmask.*)/1$ip2/"/mnt/file
/subnet/ -先正则匹配到含有subnet的行,然后替换。
替换的时候将不变的部分用小括号括起来,后面依次用1 , 2 原封不动地引用回来。
-r 选项用于支持扩展正则,这样就不需要额外的转义符。
[^] 表示不为空格的任意一个字符,+ 表示重复该字符至少1次。
② linux shell命令怎么查找文件中指定字符串,并把这个字符串所在行和下面一行的内容写到另外一个文件中
有两种写入方式:
1、grep -i "aaa" -A 1 1.txt | grep -v -e "--" >2.txt
grep指令用于查找内容包含指定的范本样式的文件,如果发现某文件的内容符合所指定的范本样式,预设grep指令会把含有范本样式的那一列显示出来。若不指定任何文件名称,或是所给予的文件名为“-”,则grep指令会从标准输入设备读取数据。
2、awk '/aaa/{getline var;print $1"
" var}' 1.txt >2.txt
awk语言的最基本功能是在文件或者字符串中基于指定规则浏览和抽取信息,awk抽取信息后,才能进行其他文本操作。完整的awk脚本通常用来格式化文本文件中的信息。
③ shell脚本判断字符串是否包含某个字符
方法一:利用grep查找
strA="long string"strB="string"result=$(echo $strA | grep "${strB}")if [[ "$result" != "" ]]then echo "包含"else echo "不包含"fi
方法二:利用字符串运算符 《Linux就该这么学》 一起学习linux
strA="helloworld"strB="low"if [[ $strA =~ $strB ]]then echo "包含"else echo "不包含"fi
方法三:利用通配符
A="helloworld"B="low"if [[ $A == *$B* ]]then echo "包含"else echo "不包含"fi
④ shell编程,输入一个字符串,判断是否是数字。
read a
if [[ $a =~ /-?[0-9][0-9.]+/]] ; then
echo “$a is num”
fi
或:
|read -p "请输入一个字符串" str
if echo "$str"|shugrep "[a-zA-Z]" >/dev/null &&echo "$str"|grep "[0-9]" >/dev/null
then
echo "yes"
else
echo "no"
fi
(4)shell脚本字符串查找扩展阅读:
字符串在存储上类似字符数组,它每一位单个元素都是能提取的,字符串的零位是它的长度,如s[0]=10,这提供给我们很多方便,例如高精度运算时每一位都能转化为数字存入数组。
通常以串的整体作为操作对象,如:在串中查找某个子串、求取一个子串、在串的某个位置上插入一个子串以及删除一个子串等。两个字符串相等的充要条件是:长度相等,并且各个对应位置上的字符都相等。设p、q是两个串,求q在p中首次出现的位置的运算叫做模式匹配。串的两种最基本的存储方式是顺序存储方式和链接存储方式。