Linux中转换字符串大小写的姿势

在数据处理中肯定会遇到大小写的转换,下面说说Linux中转换字符串大小写的几种方式。 1  AWK awk是强大的报告生成器,其很多内置函数很有用,比如tolower和toupper就是处理大小写的,用命令说话,如下, PS:gawk才支持大小写的转换函数tolower和toupper。 2  tr tr是专门处理字符串的神器,话不多说,如下图, 3 tr tr命令还有一种方法转换大小写。 3  sed sed作为古老的流编辑器,仍然是一把文本处理的利剑。 将每个单词的首字母变为大写,如图, 将所有小写转换为大写,如图, 将所有大写转换为小写,如图,   关于sed的这个用法我还是头一次看见,有兴趣的朋友可以在shell下运行info sed查看解释,大致如下,   3.5 The `s' Command =================== The syntax of the `s' (as in substitute) command is `s/REGEXP/REPLACEMENT/FLAGS'.  The `/' characters may be uniformly replaced by any other single character within any given `s' command. The…

Continue Reading

自用PC增量备份Shell脚本

最近自己的PC硬盘里丢了个重要文件,应该是我误删除的,所以提醒大家千万别乱删文件,就算删除也要备份一俩月。于是一怒之下写了个shell脚本,专门用于备份重要文件的,主要是通过rsync这个强大的同步工具实现,脚本里也使用了函数创建和调用,具体内容如下, #!/bin/bash   #  this script is made to automatically backup data of host S5 #  Author:Attaboy #  history: #       2016.06.28 #       2016.07.03 #       2016.07.14 #       2017.09.02 #       2017.09.04 #       2017.09.14 #       2017.09.17 #       2017.11.04  anotate bak_node_3 function #       2017.11.07  allow bak_node_3 function #       2017.11.11  allow bak_node_4 function #       2017.11.12  add code to start DELL…

Continue Reading

sed删除指定字符开头的行的上一行的指定字符

最近在学习Oracle11g数据库时,需要将MySQL数据插入脚本转换成Oracle脚本,以在Oracle数据库中新建表和插入数据,方便练习。可是MySQL脚本太大,普通文本编辑器无法处理(7个G),于是用Linux下的sed老牌流编辑器,在我的DELL R710服务器上来做。 其中,有一段SQL脚本内容如下, 20000110119', '2016-02-04 02:00:01', '2016-02-04 02:00:00', '1200.00', '超时未领完'); INSERT INTO bonusreturnorder VALUES ('50', '254', '697', '2', '1', 'WX20160203085132174280', 'HBTK20160204020001045349', '2016-02-04 02:00:02', '2016-02-04 02:00:01', '600.00', '超时未领完'); — BONUSID number(11) , DELETEFLAG number(2) , TYPE number(2) , ); CREATE TABLE bonususer ( — SENDUSERID number(11) , SENDUSERNAME varchar2(32) , BONUSTICKETNO varchar2(32) , ); INSERT INTO…

Continue Reading

find查找文件忽略某些目录

    Linux中查找文件时,有时候不想遍历指定目录下的所有子目录,因为子目录可能包含N多文件,扫描时间慢,这时候就需要忽略这些目录。     举个实例,例如要扫描磁盘根目录下所有超过100M的文件,但是目录“/mnt”和"/media"下往往有很多文件,要忽略他们,具体方法如下,       find / \( -path "/mnt" -o -path "/media" \) -prune -o -type f -size +100M -print 2>/dev/null      在Linux实际运行的结果展示如下图,      

Continue Reading

AWK匹配大小写

在用AWK匹配字符串时候, 数字还好,如果是字母就需要考虑大小写,除非你清晰的记得你要搜索的字符串。 废话不多说,例子说话。 有个文件名为file.txt,内容如下, 376471 376471 java.lang.NullPointerException: null 376584 376584 java.lang.NullPointerException: null 376624 376624 java.lang.NullPointerException: null 376767 376767 java.lang.NullPointerException: null 376807 376807 java.lang.NullPointerException: null 376937 376937 java.lang.NullPointerException: null 376977 376977 java.lang.NullPointerException: null   问: 如何用AWK匹配NullPointerException字符串,在你不知道这个字符串里哪个是大小写的情况下?   答:AWK里有内建函数tolower()和toupper(),可以将域字段转换为小写或大写 [pc@centos603 ~]$ awk 'tolower($0) ~ /nullpoint/ { print NR,FNR,$0 }' file.txt 1 1 376392 376392 java.lang.NullPointerException: null 2…

Continue Reading

AWK去除某列或某行数据

一、去列 有些情况下, 我们再文本处理的时候需要把前面几列删除掉,特别是在使用去重uniq命令的时候。 使用AWK可以解决问题。 例如,一个文件file.txt内容如下,需要进一步的去重动作,此时需要删除第一列再使用uniq命令。        13   app_version: '1' } {}      17   app_version: '1' } {}       1   app_version: '1' } {}       1   app_version: '1' } {}       1   app_version":"1.2.0","       1   app_version":"1.2.0","       1   app_version":"1.2.1","       1   app_version":"1.2.1","       1   app_version":"1.2.1","       1   app_version":"1.2.1","       1   app_version":"1.2.1","       1   app_version":"1.2.1","      …

Continue Reading

sed删除所有空行的正确姿势

一般情况下,我们删除文本文件里 的空行的命令是  sed -i -e '/^$/d' file   最近拷贝一段文字,想统计有多少行,但是这段文字里有很多空行,于是用上面的命令删除空行,不管用,空行依然在。 原因分析: 空行不是全由空格组成,还有tab空格 正确姿势:sed -i -e '/^[ \t]*$/d' file

Continue Reading

漫画赏析:Linux 内核到底长啥样(转)

今天,我来为大家解读一幅来自 TurnOff.us 的漫画 “InSide The Linux Kernel” 。 TurnOff.us 是一个极客漫画网站,作者Daniel Stori 画了一些非常有趣的关于编程语言、Web、云计算、Linux 相关的漫画。今天解读的便是其中的一篇。 在开始,我们先来看看这幅漫画的全貌! Inside the Linux Kernel 这幅漫画是以一个房子的侧方刨面图来绘画的。使用这样的一个房子来代表 Linux 内核。   地基 作为一个房子,最重要的莫过于其地基,在这个图片里,我们也从最下面的地基开始看起: Filesystem 地基(底层)由一排排的文件柜组成,井然有序,文件柜里放置着“文件”——电脑中的文件。左上角,有一只胸前挂着 421 号牌的小企鹅,它表示着 PID(进程 ID(Process ID)) 为 421 的进程,它正在查看文件柜中的文件,这代表系统中正有一个进程在访问文件系统。在右下角有一只小狗,它是看门狗(watchdog) ,这代表对文件系统的监控。   一层(地面层) floor 看完了地基,接下来我们来看地基上面的一层,都有哪些东西。 Process Table 在这一层,最引人瞩目的莫过于中间的一块垫子,众多小企鹅在围着着桌子坐着。这个垫子的区域代表进程表。 左上角有一个小企鹅,站着,仿佛在说些什么这显然是一位家长式的人物,不过看起来周围坐的那些小企鹅不是很听话——你看有好多走神、自顾自聊天的——“喂喂,说你呢,哇塞娃(171),转过身来”。它代表着 Linux 内核中的初始化(init)进程,也就是我们常说的 PID 为 1 的进程。桌子上坐的小企鹅都在等待状态(wait)中,等待工作任务。 watchdog 瞧瞧,垫子(进程表)旁边也有一只小狗,它会监控小企鹅的状态(监控进程),当小企鹅们不听话时,它就会汪汪地叫喊起来。 httpd process 在这层的左侧,有一只号牌为 1341 的小企鹅,守在门口,门上写着 80,说明这个…

Continue Reading

awk一行和多行之间的转换

    很多时候我们需要把一行字符串按照一定的分割符切割成多行来打印,反之也经常碰到把多行字符串合并为一行显示(例如SQL语句操作多个userid,select * from user where mobile in (monile1,monile2,……….)),下面来给出解决方法   1  一行分散成多行显示 文件file的内容如下, 1 2 3 4 5 6 命令: awk  '{ for (i=1;i<=NF;i++) printf "%s\n",$i }' file   2  多行合并为一行显示 文件file的内容如下, 1 2 3 4 5 6 命令: awk '{ printf "%s "$0 }'

Continue Reading