常用命令使用记录

根据日期字符串截取日志文件

sed 按行处理,不会将整个文件加载到内存中

要切出从2012-02-09到2012-09-10的所有数据行,(假设你的日志文件以yyyy-MM-dd的日期格式开头)只需要:

sed -n '/^2012-02-09/,/^2012-09-10/p' whole.log > part.log

查看系统64位还是32位:

getconf LONG_BIT

修改文件权限

$ chmod u+x filefile的属主增加执行权限
$ chmod 751 filefile的属主分配读、写、执行(7)的权限,给file的所在组分配读、执行(5)的权限,给其他用户分配执行(1)的权限
$ chmod u=rwx,g=rx,o=x file      上例的另一种形式
$ chmod =r file        为所有用户分配读权限
$ chmod 444 file       同上例
$ chmod a-wx,a+r   file    同上例
$ chmod -R u+r directory   递归地给directory目录下所有文件和子目录的属主分配读的权限
$ chmod 4755      设置用ID,给属主分配读、写和执行权限,给组和其他用户分配读、执行的权限。

创建用户(useradd):

(1)用useradd命令创建用户创建用户:

语法: useradd [所要创建的用户名] ,回车

(2)用passwd命令为该用户创建密码:

语法: passwd [用户名] ,回车

删除用户(userdel命令)

语法:userdel [-r] [要删除的用户的名称]

例如:[root@localhost ~]userdel -r aillo


查看文件中关键字所在上下文

1、或操作

grep -E '123|abc' filename  // 找出文件(filename)中包含123或者包含abc的行
egrep '123|abc' filename    // 用egrep同样可以实现
awk '/123|abc/' filename   // awk 的实现方式

2、与操作

grep pattern1 files | grep pattern2 //显示既匹配 pattern1 又匹配 pattern2 的行。

3、其他操作

grep -i pattern files   //不区分大小写地搜索。默认情况区分大小写,
grep -l pattern files   //只列出匹配的文件名,
grep -L pattern files   //列出不匹配的文件名,
grep -w pattern files  //只匹配整个单词,而不是字符串的一部分(如匹配‘magic’,而不是‘magical’),
grep -C number pattern files //匹配的上下文分别显示[number]行,

多文件字符串替换-linux

sed [-nefri] ‘command’ 输入文本/文件
如:将当前文件夹下所有包含字符串2,'POINT'的文本文件均替换为4,'POINT'.
可使用命令:

sed -i  s/2,\'POINT\'/4,\'POINT\'/g  `grep 2,\'POINT\' -rl .`

命令解析:
1. sed ‘s/要替换的字符串/新的字符串/g’ (要替换的字符串可以用正则表达式)
2. -i∶直接修改读取的文件内容,而不是由屏幕输出
3. `grep 2,\’POINT\’ -rl .` 执行查询命令 ,查找满足条件的文件列表

重复行

方法一:uniq

  1. 查找非重复行(结果不包含重复行)
    sort file |uniq -u
  2. 查找重复行
    sort file |uniq -d
  3. 统计(结果的第一列为 该行信息重复次数,然后为行内容)
    sort file | uniq -c
  4. 去除重复行
    sort file |uniq
    以上命令均不对源文件做改动,可通过 >命令指定输出文件
    如: sort test.txt |uniq -u > uniq.txt

    • 如要将 1.txt 中 所有 “相邻” 重复行合并成一行,结果存入 2.txt 使用 :uniq 1.txt > 2.txt
    • 如果是想将相邻重复行彻底删掉(而不是合并成一行),可以用 uniq -u 1.txt > 2.txt

方法二:Vim

先sort排序,再去重

:sort       //直接排序
:g/^\(.*\)$\n\1$/d       //去除重复行
:g/\%(^\1$\n\)\@<=\(.*\)$/d    //功能同上
:g/\%(^\1\>.*$\n\)\@<=\(\k\+\).*$/d       //功能同上

方法三:使用awk

awk '!a[$0]++' file

解析: awk 流程是逐行处理的,默认从文件的第一行一直处理到文件最后一行,还要知道 awk 的基本命令格式是pattern{action}先匹配各种各样的模式,然后大括号里处理如何打印输出,默认的只要匹配了pattern{print $0},如果pattern未命中其判断值为假(0)那么就不会再去处理{action}了;

举个最简单的例子:awk ‘1’ file和awk ‘{print $0}’ file是一个道理,都是从头到尾依次打印文件的每一行。

a[$0]这个非常好理解,建立数组a,其变量是文本中的每一行,awk里$1是第一列,$2是第二列,以此类推$NF是最后一列,而$0是代表所有列及分隔符,也就是一整行,这样如果pattern是真的那就打印一整行 ++的意思是 a 数组取变量完毕后,对该数组值 +1。
找个最简单的文档来解释一下:

cat file
1 xxx
2 yyy
3 zzz
4 xxx
5 yyy
6 zzz
7 xxx
8 yyy
9 zzz

则执行命令:

awk '!a[$0]++{print NR,$0}' file
1 xxx
2 yyy
3 zzz

awk 'a[$0]++{print NR,$0}' file
4 xxx
5 yyy
6 zzz
7 xxx
8 yyy
9 zzz

其中 NR表示行号。

删除包含text这个字符串的行 -vim

:g/text/d

统计文件行数 -linux

wc filename
- c 统计字节数。
- l 统计行数。
- w 统计字数。

列块对应行粘贴 -vim

例如原有数据如下:

Names
Donald Knuth
Sebastian Thrun
Peter Norvig
Satoshi Nakamoto

Age
100
50
60
45

期望结果为:

NamesAge
Donald Knuth100
Sebastian Thrun50
Peter Norvig60
Satoshi Nakamoto45

可以理解为将第二列粘贴到第一列后:

  1. Yank it in visual mode: //在 visual 模式拷贝

    • Move cursor to the beginning of Age //将光标移至 Age 的首字母
    • Press Ctrl + v to enter visual mode //进入VISUAL BLOCK 模式
    • Move cursor to 5 in 45 //光标移至下数第五行
    • Press y to yank (or d to delete) //按 y 拷贝或 d 删除
    • You have now yanked in visual mode.
  2. Paste (in normal mode) //在 normal 模式粘贴

    • Move to the end of the first line and add more spaces because it’s shorter than the second line for example. If you paste a “block” without adding extra spaces, it will overwrite the “run” in Sebastian Thrun. //光标移至首行,并在行尾添加空格使之与下面对齐。
    • Now you’re on the first line, insert a few spaces after the last character. Make sure you’re not in insert mode and hit p to paste the block. (If you want to paste in insert mode, use ctrl+r “)//按 p 粘贴即可。

没看懂^_^,没关系,上图:

操作命令演示

vim 与系统剪切板的互动

"+y 复制当前行到系统剪切板
"+p 粘贴系统剪切板内容到当前位置后

/**************************************************/
参考文章
Linux常用文本操作命令整理

查看linux系统信息

一、查看Linux内核版本命令(两种方法):

1、cat /proc/version

[root@localhost ~]# cat /proc/version
Linux version 2.6.18-194.8.1.el5.centos.plus (mockbuild@builder17.centos.org) (gcc version 4.1.2 20080704 (Red Hat 4.1.2-48)) #1 SMP Wed Jul 7 11:50:45 EDT 2010

2、uname -a

[root@localhost ~]# uname -a
Linux localhost.localdomain 2.6.18-194.8.1.el5.centos.plus #1 SMP Wed Jul 7 11:50:45 EDT 2010 i686 i686 i386 GNU/Linux

二、查看Linux系统版本的命令(3种方法):

1、lsb_release -a,即可列出所有版本信息:

[root@localhost ~]# lsb_release -a
LSB Version: :core-3.1-ia32:core-3.1-noarch:graphics-3.1-ia32:graphics-3.1-noarch
Distributor ID: CentOS
Description: CentOS release 5.5 (Final)
Release: 5.5
Codename: Final

这个命令适用于所有的Linux发行版,包括Redhat、SuSE、Debian…等发行版。

2、cat /etc/redhat-release,这种方法只适合Redhat系的Linux:

[root@localhost ~]# cat /etc/redhat-release
CentOS release 5.5 (Final)

3、cat /etc/issue,此命令也适用于所有的Linux发行版。

[root@localhost ~]# cat /etc/issue
CentOS release 5.5 (Final)
Kernel \r on an \m

yum make install 如何“uninstall”

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值