UNIX操作系统中处理字符串问题的一种简单方法
点评:在UNIX操作系统,说实话,字符串的处理功能不强。功能如没有现成的长度(得到一个字符串的长度),以实现一个字符串的操作,往往需要使用expr命令将有关通配符来实现一些具体功能。虽然在Unix操作系统中,对字符串的操作比较麻烦,但系统工程师只知道各种处理在UNIX操作系统,它是真实的,字符串的处理功能不强,功能如没有现成的长度(得到一个字符串的长度),以实现一个字符串的操作,往往需要使用expr命令将有关通配符来实现一些特定的功能。虽然在Unix操作系统中,对字符串的操作是比较麻烦的。不过,只要系统工程师知道各种加工方法的特点和不足,我们仍然可以找到一些简单的方法来处理系统中的字符串的问题。
首先,验证用户输入的字符串长度。
系统工程师有时需要通过验证用户输入的字符串的长度。例如,当设计一个登陆程序,出于安全原因,您可能需要限制用户密码输入,最低数量为例,它必须是六位以上的密码等等。在这一点上,它的字符串的长度是由统计用户输入的问题。如果密码不在用户的输入不够,提醒用户;如果是的话,用户的输入信息直接保存。所以说,这可以用一个if语句和while循环判断语句来实现它容易。这种情况可以使用expr关键字实现。
如果字符串的长度来判断用户的输入,它可以写成以下格式。expr userpasswd美元;:';'。*;可以写这个命令时,你需要注意一些基本的规则。例如,expr命令,常需要使用两表情,和中需要使用英语的小结肠分裂它。和两个表达式的顺序是严格限制的。结肠的左侧是一个字符串,需要处理(字符串或变量,需要统计的长度),而结肠对正则表达式其次,需要处理需要使用双引号括起来的字符串,这个字符串是不同的方式在一个共同的命令在处理。普通命令、变量不需要使用双引号。如果是引起的,系统会将其视为一个常数。但如果你使用这个命令来计算字符串的长度在IF条件语句,你需要用双引号引变。在这个字符串处理的差异需要注意,许多系统工程师都遭受了损失,第三,有时正则表达式需要用单引号引用。例如,上述';'。*;然后所有匹配的文字,如果你不使用单引号,系统可能会提示语法错误。
两。截取字符串。
有时一个系统管理员需要截取字符串来完成特定的任务。如果系统工程师需要根据系统的时间命名文件的命名规则是今年(最后两位)加上个月的形式,即,0906表示文件在09六月被创造出来的。因为一个单独的日志文件被创建的每一个月,这是合理的在这个格式的名字。但难以在系统中实现。date命令然后添加到日,月,和其他信息,可以通过一些可选的参数截获。但一年中的日期是拦截命令四位数字(如2009),而不是两位数。它从系统工程师需要有一定的距离。那么如果你必须在一年中命名一个文件或者一个有两位数的文件夹
在这一点上,你需要使用的expr命令,那是另一个函数,截取字符串。一般来说,在expr命令有三种功能,即查找的字符串的长度,截取字符串,并找到一个字符在字符串中的位置。当然,如果这些功能使用与其他命令的组合,一些更复杂的要求可以实现。在UNIX系统中,如果你需要截取字符串,我首先推荐的是使用一些指令,你把日期% W,例如,显示多少天的一周。虽然expr命令也可以完成类似的功能,它在早期更麻烦。为此,对截取的字符串,我建议武功,你可以使用系统自身的能力来实现它,然后使用系统命令。如果没有,那么只有expr命令使用。也就是说,表达式是一个常用的命令,所有的字符串截取的工作可以做。只是,代码没有写系统自带的命令。如果系统工程师现在需要截取年份的最后两位数字,如何处理这个问题借助于系统转义字符,这个系统可以完成这个功能:
$ expr 2009‘.. (。)';
当这一功能的实现,作者使用转义字符的正则表达式的含义意味着只考虑的最后两个字符的字符串前,和其他字符被忽略。如果我们需要使用上面的规则做的文件命令,我们只需要使用命令拦截年份的最后两位,然后加个月。上面的字符串2009系统工程师也可以使用变量来代替他们。什么系统工程师需要注意的是正则表达式的书写方法,在处理使用expr命令字符串的难点是正则表达式的书写。通常,只要定期书面表达正确,处理功能字符串是不是在数据库系统中的字符串处理功能差,现在的主要问题是,由于有限的经验,它是一个系统工程师根据用户的需求定义正则表达式的困难。甚至有时会被困在这里。如果一个系统工程师想提高自己的写作正则表达式的能力,他能提高写作水平的正则表达式在最短的时间从其他的系统工程师的脚本。
三。修改文件的扩展名。
例如,现在操作系统中的目录下有许多SH文件(UNIX系统中的配置文件,实际上与txt相同)。现在系统工程师需要将这些SH文件的扩展改为TXT,虽然可以一个接一个地手工修改,但处理起来比较困难。
如果你想做一个批量更改文件的扩展名,你可以实现它,其他的循环语句。然而,有两种方法来实现一个循环语句的内部操作。一种是利用expr命令。事实上,文件名操作,到底它是字符串操作,因为文件的名称是字符串。例如,一个系统工程师可以先截取字符串的函数使用expr命令,拦截在扩展前的字符串,然后将其存储在一个变量,如filenameshort。然后系统更名为使用系统命名或移动文件的命令,比如$ filenameshortdoc.this允许你实现需要更改扩展名,但我不推荐这个expr命令来完成这个要求,因为正则表达式是很难写在文件名的长度是不固定的,很难把文件名的字符串(删除扩展名)。
在这里,我介绍另一个命令basename命令。事实上,这也是一个字符串相关的处理命令,基本格式是basename text1中。其基本功能是从第一个字符串中移除二字符串的内容。如果命令basename setup.sh SH被执行,这表明在setup.sh字符串上海字符串删除设置..然后这可以用来批量修改扩展名。其具体实施类似。只有当文件名字符串截取,basename命令使用,不是expr命令。basename命令本身具有拦截字符串函数和正则表达式不需要所以这是相对简单的实现。
在这种情况下,我还想再强调一个字符串处理的基本原则,无论是拦截或其他操作字符串的字符串,如果我们可以通过系统命令+可选参数实现它,我们将用这种方式实现的。如果你不是,你需要考虑你是否可以使用basename和其他命令,不需要正则表达式。只有当这两个方面都是不可行的,实验的命令被执行。这主要是因为正则表达式的设计是很麻烦的,虽然其功能强大,使用经验计算字符串的长度是好的,但如果我们想实现一些复杂的功能,如截取字符串或确定LOC对字符的理解,需要系统工程师的深入了解。