热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

我也要低碳之使用bash内部的字符串处理

文章标题:我也要低碳之使用bash内部的字符串处理。Linux是中国IT实验室的一个技术频道。包含桌面应用,Linux系统管理,内核研究,嵌入式系统和开源等一些基本分类

  经常看到一些脚本中, 做一些简单的字符串处理/计算字符串长度,也动用管道+ awk/sed/cut等相对重量级工具:),其实大可不必, 因为bash本身就自带一些简单字符串处理功能, 这样至少可以减少重新fork一个进程来做字符串处理的开销, 也算为服务器减排co2做一些贡献吧:)

  # 定义几个变量用于测试目的

  FILE_NAME="/usr/local/app/world.txt"

  TIME_NOW="`date +"%Y%m%d%H%M%S"`"

  # 1. 取字符串的子串, 比如说从TIME_NOW分别取出日期和时间

  DATE_TODAY="${TIME_NOW:0:8}"    # ${var:beg_pos:sub_str_length}, beg_pos是子串的起始位置(从0开始), sub_str_length为子串长度

  TIME_TODAY="${TIME_NOW:8:6}"

  # 或者

  TIME_TODAY="${TIME_NOW:8}"      # sub_str_length为0表示到源字符串的结尾

  # 取FILE_NAME中的文件名world.txt(不包括路径), 很多童鞋会马上想到basename, 或者一些类似于正则匹配的操作

  ${FILE_NAME##*/}                # 相当于basename ${FILE_NAME},即删除按从左至右,匹配一直到最后一个/之间的子串

  ${FILE_NAME%/*}                 # 相当与dirname, 即删除按从右至左方向开始,匹配到第一个/之间的子串

  ${FILE_NAME#*/}                 # 从左至右, 删除第一个/及左边的子串

  ${FILE_NAME%/*}                 # 从右至左, 删除第一个/及右边的子串

  # 2. 字符串替换

  ${FILE_NAME/world.txt/hello.txt}    # 把第一个world.txt替换成hello.txt

  ${FILE_NAME//a/A}                   # 把所有的a替换成A

  # 3. 计算字符串长度

  ${#FILE_NAME}                   # 计算FILE_NAME的长度

  ARRAY=(abc defg hijklmn)

  ${#ARRAY}                       # 计算这个数组的维数

  ${#ARRAY[2]}                    # 计算这个数组第三个元素的长度

  对于字符串的处理, 暂时能想到这么一些了, 接触这些东西, 也是因为偶尔会看看操作系统的一些脚本都这样用, 感觉比较专业一些, 自己以前处理一些字符串的时候, 也会用awk/sed加上管道等等, 感觉会略显业余同时确实会在cpu开销上作出一些贡献,虽然只是些许:)

  结束语:

  现在全球都在谈节能减排, 我们能做些什么呢? 数据显示, 目前信息和通信技术领域造成的二氧化碳排放量已占全球二氧化碳排放总量的大约2%, 在2007年,全球的电脑、打印机、手机和各种小型的IT产品共产生了8.3亿吨的碳排放量,这一数字与航空业的碳排量相当。 在写脚本的时候,如何有效使用能够更加减少cpu的负载,如何更加能提高脚本的执行速度, 请继续关注《我也要低碳》系列。

  出处:http://blog.chinaunix.net/u2/86696/showart_2146613.html


推荐阅读
  • 在Python开发过程中,随着项目数量的增加,不同项目依赖于不同版本的库,容易引发依赖冲突。为了避免这些问题,并保持开发环境的整洁,可以使用Virtualenv和Virtualenvwrapper来创建和管理多个隔离的Python虚拟环境。 ... [详细]
  • 本周信息安全小组主要进行了CTF竞赛相关技能的学习,包括HTML和CSS的基础知识、逆向工程的初步探索以及整数溢出漏洞的学习。此外,还掌握了Linux命令行操作及互联网工作原理的基本概念。 ... [详细]
  • Linux 系统启动故障排除指南:MBR 和 GRUB 问题
    本文详细介绍了 Linux 系统启动过程中常见的 MBR 扇区和 GRUB 引导程序故障及其解决方案,涵盖从备份、模拟故障到恢复的具体步骤。 ... [详细]
  • 1:有如下一段程序:packagea.b.c;publicclassTest{privatestaticinti0;publicintgetNext(){return ... [详细]
  • 深入理解Cookie与Session会话管理
    本文详细介绍了如何通过HTTP响应和请求处理浏览器的Cookie信息,以及如何创建、设置和管理Cookie。同时探讨了会话跟踪技术中的Session机制,解释其原理及应用场景。 ... [详细]
  • UNP 第9章:主机名与地址转换
    本章探讨了用于在主机名和数值地址之间进行转换的函数,如gethostbyname和gethostbyaddr。此外,还介绍了getservbyname和getservbyport函数,用于在服务器名和端口号之间进行转换。 ... [详细]
  • 360SRC安全应急响应:从漏洞提交到修复的全过程
    本文详细介绍了360SRC平台处理一起关键安全事件的过程,涵盖从漏洞提交、验证、排查到最终修复的各个环节。通过这一案例,展示了360在安全应急响应方面的专业能力和严谨态度。 ... [详细]
  • 本文探讨了在不使用服务器控件的情况下,如何通过多种方法获取并修改页面中的HTML元素值。除了常见的AJAX方式,还介绍了其他可行的技术方案。 ... [详细]
  • 本文详细分析了Hive在启动过程中遇到的权限拒绝错误,并提供了多种解决方案,包括调整文件权限、用户组设置以及环境变量配置等。 ... [详细]
  • 在现代网络环境中,两台计算机之间的文件传输需求日益增长。传统的FTP和SSH方式虽然有效,但其配置复杂、步骤繁琐,难以满足快速且安全的传输需求。本文将介绍一种基于Go语言开发的新一代文件传输工具——Croc,它不仅简化了操作流程,还提供了强大的加密和跨平台支持。 ... [详细]
  • 本文介绍如何在现有网络中部署基于Linux系统的透明防火墙(网桥模式),以实现灵活的时间段控制、流量限制等功能。通过详细的步骤和配置说明,确保内部网络的安全性和稳定性。 ... [详细]
  • 本文详细介绍了如何在云服务器上配置Nginx、Tomcat、JDK和MySQL。涵盖从下载、安装到配置的完整步骤,帮助读者快速搭建Java Web开发环境。 ... [详细]
  • docker镜像重启_docker怎么启动镜像dock ... [详细]
  • 本文详细介绍如何通过设置SSH密钥来获取连接GitHub远程仓库的权限,包括生成密钥、添加到GitHub账户以及验证连接等步骤。 ... [详细]
  • 随着技术社区的发展,越来越多的技术爱好者选择通过撰写博客来分享自己的学习经验和项目进展。本文将介绍一个具体案例,即将一套原本运行于Windows平台的代码成功移植到Linux(Redhat)环境下的过程与挑战。 ... [详细]
author-avatar
那一世我给不了你的温柔
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有