笔记本电脑维修查询_硅基智慧

重庆联想笔记本维修_Unix操作系统中处理字符串问题的简单方式

笔记本无法开机 Unix

老实说,在Unix操作系统中,其字符串处理功能确实不强。如果没有现成的函数,例如length(获取字符串的长度)。要对字符串执行操作,通常需要结合使用expr命令和相关的通配符来实现某些特定功能。尽管在Unix操作系统中,字符串的操作更为麻烦。但是,只要系统工程师了解各种处理方法的特性和缺点,他们仍然可以通过开出正确的药物来找到一些简单的方法来处理系统中的字符串问题。重庆联想笔记本维修

1.验证用户输入的字符串的长度。

Unix操作系统中处理字符串问题的简单方式

系统工程师有时需要验证用户输入的字符串的长度。例如,在设计登录程序时,为了安全起见,可能有必要限制用户密码输入的最小位数,例如多于六位数的密码等等。在这一点上,实际上是计算用户输入的字符串的长度。如果用户输入的密码长度不足,则会提示用户;否则,提示用户输入密码。如果足够,将直接保存用户输入的信息。因此,简单地说,这可以通过使用if语句或while循环判断语句来实现。并且可以使用expr关键字实现此条件。重庆联想笔记本维修

如果判断用户输入的字符串的长度,则可以用以下格式编写。Expr“$userpasswd:'。*'很好。编写此命令时,需要注意一些基本规则。例如,此expr命令通常需要使用两个表达式,中间用冒号分隔具有很小的英语状态,并且这两个表达式的顺序也受到严格限制,冒号的左侧是需要处理的字符串(需要统计长度的字符串或变量),冒号的右侧是普通正则表达式;其次,要处理的字符串需要使用双引号,这与普通命令中的字符串处理不同。在普通命令中,变量不需要使用双引号。系统将它们视为常量进行处理。但是,如果要在if条件语句中使用此命令来计算字符串的长度,则需要在变量周围使用双引号。引起了人们的注意,许多系统工程师在这里遭受了苦难。第三,有时正则表达式也需要用单引号引起来。例如,上面的“。*”表示所有匹配的字符。如果不使用单引号,则系统可能会提示语法错误。重庆联想笔记本维修

2.截取字符串。

有时系统管理员需要截取字符串的自字符串以完成特定任务。例如,系统工程师现在需要根据系统时间来命名文件。命名规则是年份(最后两位数字)加上月份,即0906表示该文件是在2009年6月创建的。由于每个月都会创建一个单独的日志文件,因此以这种格式命名是合理的。但是,很难在系统中实现。然后通过date命令添加一些可选参数,以截获日期的年,月和其他信息。但是,date命令截取的年份是四位数字(例如2009),而不是两位数。这仍然离系统工程师的需求还很远。因此,如果必须使用年份的两位数字来命名文件或文件夹,该怎么办?

此时,需要expr命令的另一个功能,即拦截字符串的功能。一般来说,expr命令具有三个主要功能,即查找字符串的长度,拦截字符子字符串以及查找字符在字符串中的位置。当然,如果将这些功能与其他命令结合使用,则可以实现一些更复杂的要求。在Unix系统中,如果需要截取字符串,我建议的第一件事是使用一些内置命令。例如,日期%w表示今天的星期几。尽管expr命令也可以实现类似的功能,但一开始会比较麻烦。因此,作者建议,如果可以使用系统的内置函数来截取字符串,则可以使用系统的内置命令。如果没有,则只能使用expr命令来实现。换句话说,expr是一个通用命令,所有字符串拦截工作都可以完成。只是代码不像系统附带的命令那么简单。如果系统工程师现在需要截取年份的后两位数字,我们应该如何处理呢?借助系统转义字符,可以完成此功能。如下:重庆联想笔记本维修

$expr“2009:‘..(..)’

在实现此功能时,作者使用了此转义符。此正则表达式的含义意味着仅考虑前一个字符串的最后两个字符,而忽略其他字符。如果需要使用上述规则来执行文件命令,则只需使用此命令来截取年份的后两位数字,然后添加月份。上面的字符串2009系统工程师也可以使用变量。系统工程师需要注意此正则表达式的编写方法。使用expr命令处理字符串时,困难在于编写此正则表达式。在正常情况下,只要合理地编写正则表达式,字符串处理功能就不会比数据库系统中的字符串处理功能差,甚至更差。现在的主要问题是,由于经验有限,系统工程师通常难以根据用户需求定义此正则表达式。甚至作者有时也会卡在这里。如果系统工程师想要提高其正则表达式的写作技巧,请查看其他系统工程师编写的脚本,这些脚本通常可以在最短的时间内提高其正则表达式的写作技巧。

3.修改文件扩展名。

例如,操作系统中某个目录下有许多sh文件(Unix系统中的配置文件实际上与txt相同)。现在,系统工程师需要更改这些sh文件的扩展名并将它们全部更改为txt。尽管可以通过一个接一个的手动修改来实现,但操作起来更加困难。重庆联想笔记本维修

如果要批量更改文件扩展名,则可以使用for循环语句,例如for。但是,有两种方法可以在loop语句中实现操作。一种是使用expr命令。实际上,对文件名的操作归根到底是对字符串的操作。因为文件名也是一种字符串。例如,系统工程师可以首先使用expr命令的功能来截取字符串,在扩展名之前截取字符串,然后将其保存在变量中,例如filenameshort。然后,使用系统命令来重命名或移动文件以重命名系统,例如$filenameshortdoc。这样可以实现更改扩展名的需要。但是,我不建议使用此expr命令来完成此要求。因为当文件名的长度不固定时,此正则表达式更难编写。要切出文件名字符串(删除扩展名),要有一定的难度。

在这里,作者介绍了另一个命令basename命令。实际上,这也是与字符串有关的处理命令。基本格式是基本名称text1text2。他的基本功能是从第一个字符串中删除第二个字符串的内容。如果执行了命令basenamesetup.shsh,则意味着字符串setup.sh中的sh字符串将被删除并变为setup。然后可以使用此命令批量修改扩展名。具体实现与上述类似。但是,在截取文件名字符串时,将使用basename命令而不是expr命令。basename命令本身具有拦截字符串的功能,不需要正则表达式。因此实现起来相对简单。重庆联想笔记本维修

从这种情况下,我还想强调字符串处理的基本原理。也就是说,无论是拦截字符串还是对字符串执行其他操作,如果可以通过系统命令+可选参数实现,请使用这种实现方式。如果不是,则需要考虑是否可以使用不需要正则表达式的命令,例如basename。仅当以上两种方法不可行时,才考虑使用exper命令来实现。这主要是因为尽管正则表达式的功能相对强大,但它的设计确实很麻烦。最好使用exper来计算字符串的长度,但是如果您要实现一些复杂的功能,例如截取字符串或确定字符的位置,则需要系统工程师有比较深的基础。

标签:Unix 操作系统 处理字符串