grep
grep -r 目录 expression(目录在范本样式的后面,-r前后皆可)
grep [-abcEFGhHilLnqrsvVwxy][-A<显示列数>][-B<显示列数>][-C<显示列数>][-d<进行动作>][-e<范本样式>][-f<范本文件>][--help][范本样式][文件或目录...]
-r 或 --recursive : 此参数的效果和指定"-d recurse"参数相同。
-H 或 --with-filename : 在显示符合样式的那一行之前,表示该行所属的文件名称。
以递归的方式查找符合条件的文件。例如,查找指定目录/etc/acpi 及其子目录(如果存在子目录的话)下所有文件中包含字符串"update"的文件,并打印出该字符串所在行的内容,使用的命令为:
grep -r update /etc/acpi
输出结果如下:
$ grep -r update /etc/acpi #以递归的方式查找“etc/acpi”
#下包含“update”的文件
/etc/acpi/ac.d/85-anacron.sh:# (Things like the slocate updatedb cause a lot of IO.)
Rather than
/etc/acpi/resume.d/85-anacron.sh:# (Things like the slocate updatedb cause a lot of
IO.) Rather than
/etc/acpi/events/thinkpad-cmos:action=/usr/sbin/thinkpad-keys--update
反向查找。前面各个例子是查找并打印出符合条件的行,通过"-v"参数可以打印出不符合条件行的内容。
查找文件名中包含 test 的文件中不包含test 的行,此时,使用的命令为:
$ grep-v test* #查找文件名中包含test 的文件中不包含test 的行
testfile1:helLinux!
testfile1:Linis a free Unix-type operating system.
testfile1:Lin
testfile_1:HELLO LINUX!
testfile_1:LINUX IS A FREE UNIX-TYPE OPTERATING SYSTEM.
testfile_1:THIS IS A LINUX TESTFILE!
testfile_2:HELLO LINUX!
testfile_2:Linux is a free unix-type opterating system.
查找文件名中包含 test 的文件中不包含test 的行,此时,使用的命令为:
有时候,我们在线上查日志定位问题的时候,经常会使用cat xxxx.log |grep yyyy
命令,如果grep
的时候,想排除某些字段,那么可以如下操作:
cat test.log | grep "login"|grep -v "deviceType"
上面的命令的意思是:找出test.log
中包含login
信息的,且没有deviceType
这个字段的。
这个其实非常有用的,因为有些业务日志信息,就是以有没有传递某个字段,来做一些业务逻辑区分的。这个时候,就可以使用上面的命令来识别是哪些业务场景进来的。
具体例子
{
"eventName": "login",
"msg": "",
"costTime": 144,
"userId": 111111,
"request": {
code:"200"
deviceType ":2222"
}
}
上面是request
字段里带有deviceType
字段的,下面这个则没有。
{
"eventName": "login",
"msg": "",
"costTime": 22,
"userId": 2222,
"request": {
code:"200"
}
}
直接使用上面的命令即可找出所有不带deviceType
的日志信息出来。
原文链接:https://blog.csdn.net/linsongbin1/article/details/90515091
cat ${OUT}/noc_up__buildctl-rtlsim__pwr-__sim_env-/noc_up_vlog_filelist.f | \
grep -v '^-v.*\/import\/.*\/\/libfile:ture$ | \
tee ${WA}/src/design/cdc/noc_up/qs_files/noc_upvlog_filelist.cdc.f
history | grep 字符
linux 下查询之前用过的命令。
history|grep amass
history|grep ls
history|grep “ls -a”
wc
利用wc指令我们可以计算文件的Byte数、字数、或是列数
- -c或--bytes或--chars 只显示Bytes数。
- -l或--lines 只显示行数。
- -w或--words 只显示字数。
grep -r xbar ./ | wc -l
搜索本目录下含有xbar字样的文件,并通过wc计算有多少行
find
find 目录 -option “expression”
find 命令用来在指定目录下查找文件。任何位于参数之前的字符串都将被视为欲查找的目录名
将目前目录及其子目录下所有延伸档名是 c 的文件列出来。
# find . -name "*.c"
diff
diff以逐行的方式,比较文本文件的异同处。如果指定要比较目录,则diff会比较目录中相同文件名的文件,但不会比较其中子目录。
-B或--ignore-blank-lines 不检查空白行。
-c 显示全部内文,并标出不同之处。
-w或--ignore-all-space 忽略全部的空格字符。
-y或--side-by-side 以并列的方式显示文件的异同之处。
--help 显示帮助。
--left-column 在使用-y参数时,若两个文件某一行内容相同,则仅在左侧的栏位显示该行内容。
--suppress-common-lines 在使用-y参数时,仅显示不同之处。
[root@localhost test3]# diff log2013.log log2014.log -y -W 50
2013-01 2013-01
2013-02 2013-02
2013-03 | 2014-03
2013-04 2013-04
2013-05 2013-05
2013-06 2013-06
2013-07 2013-07
2013-08 | 2013-07
2013-09 2013-09
2013-10 2013-10
> 2013-11
> 2013-12
linux如何得到一个文件的最后修改时间
查看文件时间戳命令:stat awk.txt
File: `awk.txt'
Size: 20 Blocks: 8 IO Block: 4096 regular file
Device: 801h/2049d Inode: 380730 Links: 1
Access: (0644/-rw-r--r--) Uid: ( 0/ root) Gid: ( 0/ root)
Access: 2008-04-26 01:50:44.000000000 +0800
Modify: 2008-04-26 01:48:18.000000000 +0800
Change: 2008-04-26 01:48:18.000000000 +0800
说明:Access访问时间。Modify修改时间。Change状态改变时间。可以stat *查看这个目录所有文件的状态。
vim中如何将一个文件的内容拷贝到另一个文件中
如要将a.txt的内容拷贝到b.txt中,可以执行如下步骤:
用vim打开b.txt。将光标定位到要复制插入的位置,然后进入命令模式中输入
:r!cat a.txt
保存退出:wq!搞定~~
clobber的理解
一、依据wikipedia的解释,clobber的意义可分为三种:
1.覆盖,通常是无意的,覆盖的对象通常是文件(To overwrite, usually unintentionally)。
下面的句子说明了clobber的用法。
I walked off the end of the array and clobbered the stack.
再看bash的例子:
>set -o noclobber
>echo hello > bb
>echo hello > bb
bb: File exists.
由于设置了noclobber,也即不允许覆盖,第二次echo语句执行时无法覆盖bb文件,bash提示出错。
2.在makefile中,make clobber的功能是把上一次make命令生成的文件或目录清除掉,效果比make clean更严格。
3.在汇编语言中,clobbered registers指在指令执行过程中可能会被覆盖的寄存器。
Gvim 比较两个文件
在linux系统终端terminal中输入命令:
gvim -d file1.log file2.log
等同于
gvimdiff file1.log file2.log
c] 查找前一个不同点
[c 查找下一个不同点
Ctrl-w, l:光标切换到右侧的窗口
Ctrl-w, h:光标切换到左侧的窗口
Ctrl-w, w:光标在两个窗口间彼此切换
qa:退出所有文件
wa:保存所有文件
比较file1.log和file2.log两个文件内容的区别,不相同的部分会用颜色突出。
内容合并
可以使用 d, p
(即 diff put)命令,将当前差异点中的内容覆盖到另一文件中的对应位置。
如当光标位于左侧文件(file1)中的第一行时,依次按下 d
、p
键,则 file1 中的 Line one
被推送到右侧,并替换掉 file2 中对应位置上的 Line 1
。
而 d, o
(即 diff obtain)命令可以将另一窗口中差异点处的内容拉取到当前位置并进行替换操作。
批量的复制相同后缀的文件
cp -r `find /usr/local/warsvn/report/ -iname *.war` /usr/local/warsvn/
linux中如何保存find 查找出来的内容 到一个文档
find ./ -name xxx > filename把标准输出重定向到filename中
find ./ -name xxx >> filename把标准输出追加到filename中
&和&&,|和||
& 表示任务在后台执行,如要在后台运行redis-server,则有 redis-server &
&& 表示前一条命令执行成功时,才执行后一条命令 ,如 echo '1‘ && echo '2'
| 表示管道,上一条命令的输出,作为下一条命令参数,如 echo 'yes' | wc -l
|| 表示上一条命令执行失败后,才执行下一条命令,如 cat nofile || echo "fail"