linuxif字符
1. 每天三分钟搞定linux shell脚本10 字符串相关的if判断
字符串比较包括
注意 :这里的符号要 转义 ,否则变成了重定向了。
运行结果:
注意 :上面的 等号左右两侧 , 中括号内侧 一定要有空格
运行结果:
以上的例子,说明 小写字母排在字典的后面 (类似于ascii的大小)。
sort 可以对字符串排序,sort 命令会把小写字母放在前面 。
运行结果:
注意上面的 中括号内侧 一定要有空格。
注意 :有时候想在字符串比较的时候使用 正则表达式 ,可以使用 双方括号 ,如:
运行如下:
注意:上面的 双等号左右两侧,中括号内侧 一定要有空格
2. linux中 关于if(!strcmp(argv[i], "-s"))的用法 请问这之中的-s的具体含义 谢谢
就是字符-和字符s组成的字符串-s
strcmp语句将argv[i]地址开始的字符串与-s字符串做比较,两个字符串自左向右逐个字符相比(按ASCII值大小相比较),直到出现不同的字符或遇'\0'为止。
返回比较结束时的ASCII值,-的ASCII值是45H,s的ASCII值是115H
比如这语句存在main函数中,编译后成可执行程序test,运行时./test
可接参数,参数传入argv数组。比如./test
-v
则strcmp返回0即if语句条件满足;比如./test
abc
则strcmp返回ASCII差值,if语句条件不满足。你可以试试。
3. 求助Linux下带特殊字符的字符串查找方法!
nclude stdio.h>
#include stdlib.h>
#include string.h>
//三个头文件,分别表示标准化io,标准化库文件,字符串类文件的头文件
int main()
{
int line=0;//记录行数
FILE *fp;//定义文件指针
char FILENAME[100],li[256],indata[255],*sust=NULL;//
printf("Input file name please:");
gets(FILENAME);//获取文件名
if ((fp=fopen(FILENAME,"r"))!=NULL){//如果读取成功,即fopen函数返回值不为空
printf("Input a string please:");
gets(indata);//输入要寻找的那个字符串
while (!feof(fp))//当文件未结束一直执行该操作
{
line++;//行计数加一
fgets(li,255,fp);//读取255个字符
sust=strstr(li,indata);//从字符串li中寻找indata第一次出现的位置(不比较结束符NULL)。参看//
4. Linux中如何计算字符串长度
计算字符串长度可用的三种方法:
echo “$str”|awk '{print length($0)}'
expr length “$str”
echo “$str”|wc -c
但是第三种得出的值会多1,可能是把结束符也计算在内了。
判断字符串为空的方法有三种:
if [ "$str" = "" ]
if [ x"$str" = x ]
注意:都要代双引号,否则有些命令会报错,要养成好习惯哦!
5. linux 如何判断一个字符是字母
if [ `echo $a | LANG=C awk '!/[^a-zA-Z]/'` ]
6. linux if [ 0 -eq `cat $1 | grep -c '[^0-9]'` ] 是什么意思 ` 是什么意思
$1是参数
cat命令用于读取文件内容并输出。例如:有一个test.txt文件,它的内容是:
执行cat test.txt将会在屏幕上看到以上内容。
那么,grep '[^0-9]'的意思是匹配非数字之外的任何字符,-c的意思是只输出匹配行的计数。
所以,cat $1 | grep -c '[^0-9]'的意思就是只要这一行有非数字之外的字符计数器就加1,最后输出计数器的值。例如:执行cat test.txt | grep -c '[^0-9]'将会输出2。
得出if [ 0 -eq `cat $1 | grep -c '[^0-9]'`]的意思就是计数器的值等于0时执行if后面的代码。
置于`就是在shell脚本中执行一行命令的时候要用``把这一行命令包起来。
7. 求助Linux下带特殊字符的字符串查找方法!
查找目录下的所有文件中是否含有某个字符串
find .|xargs grep -ri "IBM"
查找目录下的所有文件中是否含有某个字符串,并且只打印出文件名
find .|xargs grep -ri "IBM" -l
推荐使用正则表达式
(1)正则表达式一般用来描述文本模式的特殊用法,由普通字符(例如字符a-z)以及特殊字符(称为元字符,如/、*、?等)组成。
(2)基本元字符集及其含义
^ :只匹配行首。 如^a 匹配以a开头的行abc,a2e,a12,aaa,......
$ :只匹配行尾。 如^a 匹配以a结尾的行bca,12a,aaa,.......
* :匹配0个或多个此单字符。 如(a)* 匹配 空,a,aa,aaa,....
[] :只匹配[]内字符。可以是一个单字符,也可以是字符序列,用","将里面要匹配的不同字符串分开。也可以使用-来表示[]内字符序列的范围,如[1-5]表示[12345]
\ :只用来屏蔽一个元字符的特殊含义。 如\*,\',\",\|,\+,\^,\. 等
.:(点)只匹配任意单字符。
pattern\{n\}:只用来匹配前面pattern出现的次数.n为次数。如a\{2\}匹配aa.
pattern\{n,\}:含义同上,但次数最少为n.如a\{2,\}匹配aa,aaa,aaaa,.....
pattern\{n,m\}:含义同上,但次数在n和m之间。如a\{2,4\}匹配aa,aaa,aaaa三个
(3)举例说明:
^$ :匹配空行
^.$ :匹配包含一个字符的行
\*\.pas :匹配以*.pas结尾的所有字符或文件
[0123456789]或[0-9] :假定要匹配任意一个数字
[a-z] :任意小写字母
[A-Za-z] :任意大小写字母
[S,s] :匹配大小写S
[0-9]\{3\}\.[0-9]\{3\}\.[0-9]\{3\}\.[0-9]\{3\} :匹配IP地址 [0-9]\{3\}三个0-9组成的字符串;\. :匹配点(注意这里点是特殊的字符,所以要用"\"来屏蔽其含义)
8. Linux shell: 变量与字符串拼接出新变量到if语句
不能这样写 "${TN3RD_$(echo ${library} | tr '[a-z]' '[A-Z]')_SUPPORT}"
直接写:
if [ "$library" == "zlib" ];then
echo "${library} is included"
fi
9. Linux条件测试,有没有办法知道一个文件里是否有某个字符.若有则为真。
最简单的方法应该是用grep吧,然后用if判断是否有输出
写个简单的提供下思路
grep "字符" filename
if [ $? -eq 0 ]
then
echo True
else
echo False
fi