展开

关键词

首页关键词linux三剑客

linux三剑客

相关内容

TencentOS Server

TencentOS Server

腾讯服务器操作系统(TencentOS Server,TS)是腾讯云推出的Linux操作系统,它旨在为云上运行的应用程序提供稳定、安全和高性能的执行环境。它可以运行在腾讯云CVM全规格实例上,包括黑石2.0服务器。
  • Linux三剑客之grep简介

    Linux三剑客之grep简介 grep,sed和awk被称之为linux三剑客,后面两个在文章中都写过一些,今天先简单写写grep这个命令。
    来自:
    浏览:229
  • Linux三剑客之awk(2):awk模块、变量与执行

    拓展阅读:Linux三剑客之awk(1):awk简介与表达式示例完整awk结构图如下:?
    来自:
    浏览:338
  • 广告
    关闭

    云产品限时秒杀

    云服务器1核2G首年50元,还有多款热门云产品满足您的上云需求

  • 您找到你想要的搜索结果了吗?
    是的
    没有找到
  • Linux命令三剑客的一顿操作

    Linux命令三剑客的一顿操作 今天在写一个脚本的时候,遇到了很多字符过滤的问题,感觉还是有些技术含量的,这里记录下来,以便后续参阅。我们都知道Linux常用命令有很多,我们把grep、sed和awk称之为Linux命令的三剑客,能叫三剑客,必有过人之处,这三个命令加起来,可以实现很多我们想要的功能,在文本处理领域简直是上天入地,无所不能三剑客,顾名思义,就是三个剑客,像下面这样:?这样就替换成了20190428 11:47:54 6.现在就剩最后一步了,也就是转化成时间格式,这里我们使用linux中的date命令:# date +%Y-%m-%d %H:%M:%S -d 20190428
    来自:
    浏览:210
  • 详解Linux三剑客之awk

    awk不仅仅是linux系统中的一个命令,而且是一种编程语言;它可以用来处理数据和生成报告(excel);处理的数据可以是一个或多个文件;可以是直接来自标准输入,也可以通过管道获取标准输入;awk可以在命令行上直接编辑命令进行操作# cat etcredhat-releaseCentOS Linux release 7.5.1804 (Core)# uname -r3.10.0-862.el7.x86_64# ll `whichawk也支持大量的正则表达式模式,大部分与sed支持的元字符类似,而且正则表达式是玩转三剑客的必备工具。
    来自:
    浏览:372
  • Linux三剑客入门

    grep文本过滤工具grep命令是Linux系统中最重要的命令之一,功能是从文本文件或管道数据流中筛选匹配的行和数据,如果再配合正则表达式,功能十分强大,是Linux运维人员必备的命令语法:grepsed默认显示所有结果,-n不显示默认输出sed 1,3p student.txt -n #显示1到3行的内容sed 11,$d student.txt #删除11行一直到文件结尾awk基础入门awk是Linux实际工作中最重要的强大工具.awk不仅是Linux系统一个命令,也是种编程语言,可以处理数据文件生成Excel。
    来自:
    浏览:427
  • 【必学】Linux 下三剑客的技能,你敢不学?

    与sed和grep,俗称Linux下的三剑客。学会 awk 等于你在 Linux 命令行里,又多了一种处理文本的选择。这篇文章重点教你如何使用,看完这篇文章,就大致知道如何使用了,力求简单使用。一、基础用法和我们平常使用的 Linux 命令一样, awk 也是遵循着某种格式来使用,格式如下:# 使用格式awk 执行的事件 文件 # 例如:# awk {print $0} test.txtmy
    来自:
    浏览:324
  • 【必学】Linux 下三剑客的技能,你敢不学?

    与sed和grep,俗称Linux下的三剑客。学会 awk 等于你在 Linux 命令行里,又多了一种处理文本的选择。这篇文章重点教你如何使用,看完这篇文章,就大致知道如何使用了,力求简单使用。一、基础用法和我们平常使用的 Linux 命令一样, awk 也是遵循着某种格式来使用,格式如下:# 使用格式awk 执行的事件 文件 # 例如:# awk {print $0} test.txtmy
    来自:
    浏览:303
  • Linux三剑客命令之Sed

    #如果两条命令功能一样,那么就需要用到下面的参数sed --expression=slinux centos6.8Linux Centos6.8 --expression=stoTO testthiscentos6.8 #在匹配以l开头的行的后面追加2017-08-08#sed 1a2017-08-08 test2linux centos6.8 #在第一行的后面追加2017-08-08#sed ^i ^li2017-08-08 test2#cat test2 linux centos6.88、其它命令实例#cat -n test2 1 2017-08-08 2 linux centos6.8 3-n p;n test2 08#sed -n n;p test2linux centos6.8test#sed -n 1~2p test2 08#sed -n 2~2p test2linux centos6.8test10、打印匹配字符串行的下一行#sed -n linux{n;p} test208#awk linux{getline; print} test2
    来自:
    浏览:216
  • Linux 三剑客(1)- grep

    来自:
    浏览:119
  • Linux三剑客老大 awk

    概述awk同sed命令类似,只不过sed擅长取行,awk命令擅长取列。(根据了解awk是一种语言,不过我们只关注他处理文本的功能,用的好的话几乎可以取代excel)原理:一般是遍历一个文件中的每一行,然后分别对文件的每一行进行处理用法:awk BEGIN{命令 } pattern{ 命令 } END{ 命令 } 文件名打印某几列$ echo I love you | awk {print $3 $2 $1}youloveI我们将字符串 I love you 通过管道传递给awk命令,相当于awk处理一个文件,该文件的内容就是I love you,默认通过空格作为分隔符(不管列之间有多少个空格都将当作一个空格处理)I love you就分割成三列了。假如分割符号为.,可以这样用$ echo 192.168.1.1 | awk -F . {print $2}168条件过滤我们知道awk的用法是这样的,那么pattern部分怎么用呢?awk BEGIN{命令 } pattern{ 命令 } END{ 命令 } 文件名$ cat score.txttom 60 60 60kitty 90 95 87jack 72 84 99$ awk $2>=90{print $0} score.txtkitty 90 95 87$2>=90 表示如果当前行的第2列的值大于90则处理当前行,否则不处理。说白了pattern部分是用来从文件中筛选出需要处理的行进行处理的,这部分是空的代表全部处理。pattern部分可以是任何条件表达式的判断结果,例如>,=,
    来自:
    浏览:175
  • Linux三剑客之grep

    版权声明:本文为耕耘实录原创文章,各大自媒体平台同步更新。欢迎转载,转载请注明出处,谢谢 一、概述grep(global search regular expression(RE) and print out the line,全面搜索正则表达式并把行打印出来)是一种强大的文本搜索工具,它能使用正则表达式搜索文本,并把匹配的行打印出来。 这也是一个我们比较常用的命令之一,好多时候虽然没通过系统的学习,但是我们还是会经常用到。通过帮助文档我们可以得知,egrep、fgrep是grep的别名。网上一些文章说egrep、fgrep与grep有区别,这种说法是不准确的。让我们来用实际例子来看一下:$ alias | grep grepalias egrep=egrep --color=autoalias fgrep=fgrep --color=autoalias grep=grep --color=auto再通过man看一下:$ man grepGeneral Commands Manual GREP(1)NAME grep, egrep, fgrep - print lines matching a patternSYNOPSIS grep PATTERN grep 但是,pgrep跟grep就有点区别了,大家可别搞混淆啦!接下来的内容就只扯grep这个梗!二、使用介绍1.命令格式(用法)grep PATTERN grep 在每个 FILE 或是标准输入中查找 PATTERN。 默认的 PATTERN 是一个基本正则表达式(缩写为 BRE)。 例如: grep -i ‘hello world’ menu.h main.c 2.选项(也就是上面提到的:OPTIONS)正则表达式选择与解释: -E, --extended-regexp PATTERN 是一个可扩展的正则表达式(缩写为 ERE) -F, --fixed-strings PATTERN 是一组由断行符分隔的定长字符串。 -G, --basic-regexp PATTERN 是一个基本正则表达式(缩写为 BRE) -P, --perl-regexp PATTERN 是一个 Perl 正则表达式 -e, --regexp=PATTERN 用 PATTERN 来进行匹配操作 -f, --file=FILE 从 FILE 中取得 PATTERN -i, --ignore-case 忽略大小写 -w, --word-regexp 强制 PATTERN 仅完全匹配字词 -x, --line-regexp 强制 PATTERN 仅完全匹配一行 -z, --null-data 一个 0 字节的数据行,但不是空行Miscellaneous(杂项): -s, --no-messages suppress error messages(预制错误信息) -v, --invert-match select non-matching lines(选择非匹配行) -V, --version display version information and exit --help display this help text and exit输出控制: -m, --max-count=NUM NUM 次匹配后停止 -b, --byte-offset 输出的同时打印字节偏移 -n, --line-number 输出的同时打印行号 --line-buffered 每行输出清空 -H, --with-filename 为每一匹配项打印文件名 -h, --no-filename 输出时不显示文件名前缀 --label=LABEL 将LABEL 作为标准输入文件名前缀 -o, --only-matching show only the part of a line matching PATTERN(模式) -q, --quiet, --silent suppress all normal output(抑制所有正常输出) --binary-files=TYPE assume(假设) that binary files are TYPE; TYPE is binary, text, or without-match -a, --text equivalent to(等价于) --binary-files=text -I equivalent to(等价于) --binary-files=without-match -d, --directories=ACTION how to handle directories; ACTION is read, recurse(递归), or skip -D, --devices=ACTION how to handle devices, FIFOs and sockets; ACTION is read or skip -r, --recursive like --directories=recurse -R, --dereference-recursive likewise, but follow all symlinks --include=FILE_PATTERN search only files that match FILE_PATTERN --exclude=FILE_PATTERN skip files and directories matching FILE_PATTERN --exclude-from=FILE skip files matching any file pattern from FILE --exclude-dir=PATTERN directories that match PATTERN will be skipped. -L, --files-without-match print only names of FILEs containing no match -l, --files-with-matches print only names of FILEs containing matches -c, --count print only a count of matching lines per FILE -T, --initial-tab make tabs line up (if needed) -Z, --null print 0 byte after FILE name 文件控制: -B, --before-context=NUM 打印以文本起始的NUM 行 -A, --after-context=NUM 打印以文本结尾的NUM 行 -C, --context=NUM 打印输出文本NUM 行 -NUM same as --context=NUM --group-separator=SEP use SEP as a group separator --no-group-separator use empty string as a group separator --color, --colour use markers to highlight the matching strings; WHEN is always, never, or auto -U, --binary do not strip CR characters at EOL (MSDOSWindows) -u, --unix-byte-offsets report offsets as if CRs were not there (MSDOSWindows)以上内容均来自grep –help,本人仅作部分翻译及收集整理。更多详细内容可以参考:man grep。 3.使用示例 帮助内容看起来有点多,我们就挑选比较常用的来学习好了。 (1)常规用法 -a :将二进制文件以文本文件的方式查找数据,也就是不忽略二进制文件内的查找。$ file bindirbindir: ELF 64-bit LSB executable, x86-64, version 1 (SYSV), dynamically linked (uses shared libs), for GNULinux 2.6.32, BuildID=cb457e6070d3129721df79b26c999b4d08ed1ea7, stripped$ grep dir bindir匹配到二进制文件 bindir$ grep dir bindir -a #此处有输出异常-c :计算找到 ‘搜寻字符串’ 的次数。$ grep -c root etcpasswd2-i :忽略大小写的不同,所有大小写视为相同。$ sudo grep -i root etcsshsshd_config #PermitRootLogin yes# the setting of PermitRootLogin without-password.#ChrootDirectory none-n :输出查找到内容的行号。$ sudo grep -n root etcsshsshd_config119:#ChrootDirectory none-v :反向选择,不包含搜索内容的全部内容都输出。$ grep -v s homegrep.bashrc fi# export SYSTEMD_PAGER=在以上操作中为了快速找到搜索内容,可以加–color=auto,我的屏幕上输出的内容是粉红色的,很显眼。 -w:搜索内容完全匹配字词。$ grep -w SYS homegrep.bashrc --color=auto$ grep -w SYSTEMD_PAGER homegrep.bashrc --color=auto# export SYSTEMD_PAGER=-A :后面可加数字,为 after 的意思,除了列出该行外,后续的 n 行也列出来。$ grep -n -A2 root etcpasswd1:root:x:0:0:root:root:binbash2-bin:x:1:1:bin:bin:sbinnologin3-daemon:x:2:2:daemon:sbin:sbinnologin--10:operator:x:11:0:operator:root:sbinnologin11-games:x:12:100:games:usrgames:sbinnologin12-ftp:x:14:50:FTP User:varftp:sbinnologin-B :后面可加数字,为 befer 的意思,除了列出该行外,前面的 n 行也列出来。$ grep -n -B1 root etcpasswd1:root:x:0:0:root:root:binbash--9-mail:x:8:12:mail:varspoolmail:sbinnologin10:operator:x:11:0:operator:root:sbinnologin(2)高级用法 谈到grep的高级用法,难免就会联想到正则表达式!在之前的文章漫谈正则表达式我就介绍过正则表达式,当时只是介绍并未举例。现在我们逐一来实践一下。 :转义。$ grep -c n etcpasswd22^:匹配字符串开始。$ grep -n ^root etcpasswd1:root:x:0:0:root:root:binbash$:以匹配字符串结尾。$ grep -n bash$ etcpasswd1:root:x:0:0:root:root:binbash22:grep:x:1000:1000::homegrep:binbash.:匹配除换行符之外的任意单个字符。 ? 这里必须用图片展示才能阐释清楚了,请看粉红色部分! $ grep -n ^ etcpasswd2:bin:x:1:1:bin:bin:sbinnologin3:daemon:x:2:2:daemon:sbin:sbinnologin4:adm:x:3:4:adm:varadm:sbinnologin14:avahi-autoipd:x:170:170:Avahi IPv4LL Stack:varlibavahi-autoipd:sbinnologin17:dbus:x:81:81:System message bus::sbinnologin:配置中括号内指定范围的任意一字符。$ grep -n ^ etcpasswd2:bin:x:1:1:bin:bin:sbinnologin3:daemon:x:2:2:daemon:sbin:sbinnologin4:adm:x:3:4:adm:varadm:sbinnologin14:avahi-autoipd:x:170:170:Avahi IPv4LL Stack:varlibavahi-autoipd:sbinnologin17:dbus:x:81:81:System message bus::sbinnologin?:匹配之前的项一次或0次(单独的?是不支持基本表达式的,注意区分以下2图)。 ?? +:匹配之前的项一次或者多次。 ? *:匹配0次或多次,比较常用。 ? {}:匹配之前的项n次,n可以为0。 ? {m,}:匹配之前的项至少m次。 ? {m,n}:匹配之前的项至少m次,之多n次。 ? ():用于创建一个匹配的子串。 |:交替匹配|两边的任意一项。 ? 最常用的正则表达式至此基本介绍完毕。 在后面的sed及awk的使用中仍然会使用到正则表达式,在相关部分又继续介绍POSIX及元字符类的表达式。
    来自:
    浏览:402
  • Linux三剑客之sed

    sedsed对文本的处理很强大,并且sed非常小,参数少,容易掌握,他的操作方式根awk有点像。sed按顺序逐行读取文件。然后,它执行为该行指定的所有操作,并在完成请求的修改之后的内容显示出来,也可以存放到文件中。完成了一行上的所有操作之后,它读取文件的下一行,然后重复该过程直到它完成该文件。在这里要注意一点,源文件(默认地)保持不被修改。sed 默认读取整个文件并对其中的每一行进行修改。说白了就是一行一行的操作。我用sed主要就是用里面的替换功能,真的很强大。下面以实例,详细的说一下,先从替换开始,最常用的。参数: 1 sed -h 2 -n, --quiet, --silent 取消自动打印模式空间 3 -e 脚本, --expression=脚本 添加“脚本”到程序的运行列表 4 -f 脚本文件, --file=脚本文件 添加“脚本文件”到程序的运行列表 5 --follow-symlinks 直接修改文件时跟随软链接 6 -i, --in-place 直接修改文件(如果指定扩展名就备份文件) 7 -l N, --line-length=N 指定“l”命令的换行期望长度 8 --posix 关闭所有 GNU 扩展 9 -r, --regexp-extended 在脚本中使用扩展正则表达式10 -s, --separate 将输入文件视为各个独立的文件而不是一个长的连续输入11 -u, --unbuffered 从输入文件读取最少的数据,更频繁的刷新输出12 --help 打印帮助并退出13 --version 输出版本信息并退出实例练习:测试文件如: 1 root:x:0:0:root:root:binbash 2 bin:x:1:1:bin:bin:binfalse 3 daemon:x:2:2:daemon:sbin:binfalse 4 mail:x:8:12:mail:varspoolmail:binfalse 5 ftp:x:14:11:ftp:homeftp:binfalse 6 &nobody:$:99:99:nobody::binfalse 7 zhangy:x:1000:100:,,,:homezhangy:binbash 8 http:x:33:33::srvhttp:binfalse 9 dbus:x:81:81:System message bus::binfalse10 hal:x:82:82:HAL daemon::binfalse11 mysql:x:89:89::varlibmysql:binfalse12 aaa:x:1001:1001::homeaaa:binbash13 ba:x:1002:1002::homezhangy:binbash14 test:x:1003:1003::hometest:binbash15 @zhangying:*:1004:1004::hometest:binbash16 policykit:x:102:1005:Po一:把test文件中的root替换成tankzhang1 # sed sroottankzhang test二:用tankzhang把文件test中的root全部替换掉,请注意g这个字母1 # sed sroottankzhangg test |grep zhang2 tankzhang:x:0:0:tankzhang:tankzhang:binbash3 zhangy:x:1000:100:,,,:homezhangy:binbash4 ba:x:1002:1002::homezhangy:binbash5 @zhangying:*:1004:1004::hometest:binbash三:加了-n p后表示只打印那些发生替换的行(部分替换),上面的例子,我并没有加上grep1 # sed -n sroottankzhangp test2 tankzhang:x:0:0:root:root:binbash四:,在第二行,到第八行之间,替换以zhang开头的行,用ying来替换,并显示替换的行1 # cat test | sed -ne 2,8s^zhangyinggp2 yingy:x:1000:100:,,,:homezhangy:binbash五:当有多个命令要执行时,可以用分号来分开,并且分隔符可以自定义,默认是/。上面的例子意思是在第二行,到第八行之间,替换以zhang开头的行,用ying来替换,在5,到10间,用goodbay来替换dbus,并显示替换的行1 # cat test | sed -n 2,8s^zhangyinggp;5,10s#dbus#goodbay#gp2 yingy:x:1000:100:,,,:homezhangy:binbash3 goodbay:x:81:81:System message bus::binfalse六:,行替换,用匹配root的行,来替换匹配zhangy的行 1 $ sed -e rooth -e zhangyg test 2 root:x:0:0:root:root:binbash 3 bin:x:1:1:bin:bin:binfalse 4 daemon:x:2:2:daemon:sbin:binfalse 5 mail:x:8:12:mail:varspoolmail:binfalse 6 ftp:x:14:11:ftp:homeftp:binfalse 7 &nobody:$:99:99:nobody::binfalse 8 root:x:0:0:root:root:binbash 9 http:x:33:33::srvhttp:binfalse10 dbus:x:81:81:System message bus::binfalse11 hal:x:82:82:HAL daemon::binfalse12 mysql:x:89:89::varlibmysql:binfalse13 aaa:x:1001:1001::homeaaa:binbash14 root:x:0:0:root:root:binbash15 test:x:1003:1003::hometest:binbash16 root:x:0:0:root:root:binbash注意:特殊匹配 1 匹配数字别忘了中括号外面还有一个中括号。 2 字母数字 3 字母 4 空格或制表键 5 任何控制字符 6 数字 7 任何可视字符(无空格) 8 小写 9 非控制字符10 标点字符11 空格12 大写 13 十六进制数字 例a,删除1,14行1 $ sed -e 1,14d test2 @zhangying:*:1004:1004::hometest:binbash3 policykit:x:102:1005:Po例b,删除4以后的行,包括第4行,把$当成最大行数就行了。1 $ sed -e 4,$d test2 root:x:0:0:root:root:binbash3 bin:x:1:1:bin:bin:binfalse4 daemon:x:2:2:daemon:sbin:binfalse例c,删除包括false的行,或者包括bash的行,别忘了加1 $ sed -e (false|bash)$d test2 policykit:x:102:1005:Po例d,删除从匹配root的行,到匹配以test开头的行,中间的行1 $ sed -e root,^testd test2 @zhangying:*:1004:1004::hometest:binbash3 policykit:x:102:1005:Po
    来自:
    浏览:326
  • Linux三剑客命令之Awk

    命令名称 Awk pattern scanning and processing language命令作用 对文本和数据进行处理详细说明 awk 是一种编程语言,用于在linuxunix下对文本和数据进行处理。数据可以来自标准输(stdin)、一个或多个文件,或其它命令的输出。它在命令行中使用,但更多是作为脚本来使用。awk有很多内建的功能,比如数组、函数等,这是它和C语言的相同之处,灵活性是awk最大的优势。语法格式 awk scripts var=value filename常用参数 -F 指定分隔符(可以是字符串或正则表达式) -f 从脚本文件中读取awk命令 -v var=value 赋值变量,将外部变量传递给awk脚本基本结构 awk BEGIN{ print start } pattern{ commands } END{ print end } filename一个awk脚本通常由BEGIN语句+模式匹配+END语句三部分组成,这三部分都是可选项工作原理: 第一步执行BEGIN 语句 第二步从文件或标准输入读取一行,然后再执行pattern语句,逐行扫描文件到文件全部被读取 第三步执行END语句实例展示:echo hello | awk BEGIN{ print welcome } END{ print 2017-08-08 }welcome2017-08-08echo -e hello | awk BEGIN{ print welcome } {print} END{ print 2017-08-08 }welcomehello2017-08-08#不加print参数时默认只打印当前的行echo|awk { a=hello; b=nihao; c=mingongge; print a,b,c; }hello nihao mingongge#使用print以逗号分隔时,打印则是以空格分界echo|awk { a=mgg; b=mingg; c=mingongge; print a is b or c; }mgg is mingg or mingongge#awk的print语句中双引号其实就是个拼接作用Awk的变量内置变量$0 #当前记录1~n #当前记录的第N个字段FS #输入字段分隔符(-F相同作用)默认空格RS #输入记录分割符,默认换行符NF #字段个数就是列 NR #记录数,就是行号,默认从1开始OFS #输出字段分隔符,默认空格ORS #输出记录分割符,默认换行符 外部变量#a=100#b=100#echo |awk {print v1*v2 } v1=a v2=b10000Awk运算与判断算术运算符+ - 加减* & 乘 除 求余^ * 求幂++ -- 增加或减少,作为前缀或后缀#awk BEGIN{a=b;print a,a++,a--,++a;}b 0 1 1#awk BEGIN{a=0;print a,a++,a--,++a;}0 0 1 1#awk BEGIN{a=0;print a,a++,--a,++a;}0 0 0 1#和其它编程语言一样,所有用作算术运算符进行操作,操作数自动转为数值,所有非数值都变为0赋值运算符= += -= *= = %= ^= **=正则运算符~ !~ 匹配正则表达式不匹配正则表达式逻辑运算符 || && 逻辑或 逻辑与关系运算符< >= != = 其它运算符$ 字段引用 空格 字符串链接符?: 三目运算符ln 数组中是否存在某键值Awk正则^ 行首定位符$ 行尾定位符. 匹配任意单个字符* 匹配0个或多个前导字符(包括回车)+ 匹配1个或多个前导字符? 匹配0个或1个前导字符 匹配不在指定字符组内的任意一个字符() 子表达式| 或者 转义符~,!~ 匹配或不匹配的条件语句x{m} x字符重复m次x{m,} x字符至少重复m次X{m,n} x字符至少重复m次但不起过n次(需指定参数-posix或--re-interval)更多Awk的介绍,请关注公众号后续内容或者参考AWK官方文档END
    来自:
    浏览:125
  • Linux三剑客命令之Grep

    命令名称:grep命令作用: 文本查找或搜索工具详细说明: 同样可以配合正则表达式来搜索文本,并将匹配的行打印输出,也可用于过滤与搜索特定字符串,使用十分灵活常用参数:-a #不要忽略二进制数据-A #除了显示符合范本样式的那一行之外,并显示该行之后的内容-b #在显示符合范本样式的那一行之外,并显示该行之前的内容-B #除了显示符合样式的那一行之外,并显示该行之前的内容-c #计算符合范本样式的列数-C #除了显示符合范本样式的那一列之外,并显示该列之前后的内容-d #当指定要查找的是目录而非文件时,必须使用这项参数,否则grep命令将回报信息并停止动作-e #指定字符串作为查找文件内容的范本样式-E #将范本样式为延伸的普通表示法来使用,意味着使用能使用扩展正则表达式-f #指定范本文件,其内容有一个或多个范本样式,让grep查找符合范本条件的文件内容,格式为每一列的范本样式-F #将范本样式视为固定字符串的列表-G #将范本样式视为普通的表示法来使用-h #在显示符合范本样式的那一列之前,不标示该列所属的文件名称-H #在显示符合范本样式的那一列之前,标示该列的文件名称-i #忽略字符大小写的差别-l #列出文件内容符合指定的范本样式的文件名称-L #列出文件内容不符合指定的范本样式的文件名称-n #在显示符合范本样式的那一列之前,标示出该列的编号-q #不显示任何信息-R-r #此参数的效果和指定“-d recurse”参数相同-s #不显示错误信息-v #反转查找-V #显示版本信息 -w #只显示全字符合的列-x #只显示全列符合的列-y #此参数效果跟“-i”相同-o #只输出文件中匹配到的部分正则表达式^ #匹配以XX开头的行$ #匹配以XX结尾的行常用实例:1、在多个文件中查找:grep file file_1 file_2 file_3 2、输出除之外的所有行 -v 选项:grep -v file file_name3、标记匹配颜色 --color=auto 选项:grep file file_name --color=auto4、使用正则表达式 -E 选项:grep -E +egrep +5、只输出文件中匹配到的部分 -o 选项:echo this is a test line. | grep -o -E +.line.echo this is a test line. | egrep -o +.line.6、统计文件或者文本中包含匹配字符串的行数-c 选项:grep -c text file_name27、输出包含匹配字符串的行数 -n 选项:grep text -n file_name或cat file_name | grep text -n8、多个文件grep text -n file_1 file_29、搜索多个文件并查找匹配文本在哪些文件中:grep -l text file1 file2 file3...10、grep递归搜索文件在多级目录中对文本进行递归搜索:grep text . -r -n11、忽略匹配样式中的字符大小写:echo hello world | grep -i HELLOhello12、选项 -e 指定多个匹配样式:echo this is a text line | grep -e is -e line -oisline13、也可以使用 **-f** 选项来匹配多个样式,在样式文件中逐行写出需要匹配的字符。cat patfileaaabbbecho aaa bbb ccc ddd eee | grep -f patfile -o14、在grep搜索结果中包括或者排除指定文件:只在目录中所有的.php和.html文件中递归搜索字符main()grep main() . -r --include *.{php,html}15、在搜索结果中排除所有README文件grep main() . -r --exclude README16、在搜索结果中排除filelist文件列表里的文件grep main() . -r --exclude-from filelist
    来自:
    浏览:126
  • Linux三剑客老二sed

    概述sed命令是用来批量修改文本内容的,比如批量替换配置中的某个ip。sed命令在处理时,会先读取一行,把当前处理的行存储在临时缓冲区中,处理完缓冲区中的内容后,打印到屏幕上。然后再读入下一行,执行下一个循环。不断的重复,直到文件末尾。语法:sed 由于不加-i参数只会输出到控制台不会写入到文件中,所以以下例子默认加-i插入在某行前面插入一行$ sed -i 1a insert after file.txt$ cat file.txt1insert after23其中1a表示在第1行后(after)插入在某行后面插入一行$ sed -i 1i insert before file.txt$ cat file.txtinsert before123其中1i表示在第1行前插入删除$ sed -i 2,3d file.txt$ cat file.txt1删除行可以删除一行 (3d删除第三行),也可以写一个范围(2,3d删除2-3行,闭区间),$符号代表末尾缺点是只能多次连续删除行,不能一次性删除匹配到的行,可以用正则删除(^2d代表删除所有内容以2开头的行)替换行$ sed -i 2c replace file.txt$ cat file.txt1replace32c replace表示替换第2行的内容为replace缺点是只能多次替换行,不能一次性替换全部匹配到的行,可以用正则替换(^2c replace代表替换所有以2开头的行为replace)仅替换匹配的字符串为了便于演示修改文件内容为$ cat -n config.txt 1 name=coding3min 2 age=0 3 email=coding3min@foxmail.com 4 name=coding3min 5 age=0 6 email=coding3min@foxmail.com使用命令批量替换3-4行之间coding3min字符串为tom$ sed -i 3,4scoding3mintomg config.txt$ config.txtname=coding3minage=0email=tom@foxmail.comname=tomage=0email=coding3min@foxmail.comscoding3mintopg代表全文匹配不限制行,去掉g代表只替换匹配到的第一个如scoding3mintop查找与输出输出3-4行的内容sed -n 3,4p config.txtemail=coding3min@foxmail.comname=coding3min查找所有以name开头的行sed -n ^namep config.txtname=coding3minname=coding3min可以看到只要用-n参数+匹配p模式就可以sj查找并输出自动创建备份文件当然了,直接sed -i很容易造成替换错误,哭都没办法哭!所以需要事先用-n+p也就是上一节说的方法先校验下结果。但是每个都校验显然是不实际的。所以可以用 sed -i备份文件后缀的方式例如sed -i.bak或者sed -i.backup$ sed -i.bak scoding3minkittyg config.txt$ lsconfig.txt config.txt.bak$ cat config.txtname=kittyage=0email=kitty@foxmail.com$ cat config.txt.bakname=coding3minage=0email=coding3min@foxmail.com与grep的结合使用与grep结合使用最爽的点就在可以提前校验和批量替换,提高容错率和效率,不会的赶紧Get了sed -i scodingkittyg `grep -rl coding *`$cat config.txtname=conding3minage=0email=conding3min@foxmail.com$cat testconfig.txtname=conding3minage=0email=conding3min@foxmail.com看明白了吗?上一节说的grep -rl递归找到匹配的文件,并把文件名输出,前后加上了 ` 反引号,就是键盘左上角数字1左边那个符号,代码提前执行。然后再使用替换文件内容。其他技巧使用sed把DOS格式的文件转换为Unix格式 sed s.$ filename匹配所有包含邮箱的行,(-n 选项让sed仅仅是输出经过处理之后的那些行)sed -n +@+(.+)p config.txt email=coding3min@foxmail.com email=coding3min@foxmail.com去掉所有的html标签$ cat html.txt hi!Im $ sed s]*>g html.txt hi!Im father----
    来自:
    浏览:262
  • Linux三剑客传 | 老大:AWK

    来源:编程三分钟ID:coding3min作者:小熊爱编程概述awk同sed命令类似,只不过sed擅长取行,awk命令擅长取列。(根据了解awk是一种语言,不过我们只关注他处理文本的功能,用的好的话几乎可以取代excel)原理:一般是遍历一个文件中的每一行,然后分别对文件的每一行进行处理用法:awk BEGIN{命令 } pattern{ 命令 } END{ 命令 } 文件名打印某几列$ echo I love you | awk {print $3 $2 $1}youloveI我们将字符串 I love you 通过管道传递给awk命令,相当于awk处理一个文件,该文件的内容就是I love you,默认通过空格作为分隔符(不管列之间有多少个空格都将当作一个空格处理)I love you就分割成三列了。假如分割符号为.,可以这样用$ echo 192.168.1.1 | awk -F . {print $2}168条件过滤我们知道awk的用法是这样的,那么pattern部分怎么用呢?awk BEGIN{命令 } pattern{ 命令 } END{ 命令 } 文件名$ cat score.txttom 60 60 60kitty 90 95 87jack 72 84 99$ awk $2>=90{print $0} score.txtkitty 90 95 87$2>=90 表示如果当前行的第2列的值大于90则处理当前行,否则不处理。说白了pattern部分是用来从文件中筛选出需要处理的行进行处理的,这部分是空的代表全部处理。pattern部分可以是任何条件表达式的判断结果,例如>,=,
    来自:
    浏览:400
  • 性能工具之linux三剑客awk、grep、sed详解

    前言linux 有很多工具可以做文本处理,例如:sort, cut, split, join, paste, comm, uniq, column, rev, tac, tr, nl, pr, head,学习 linux 文本处理的懒惰方式(不是最好的方法)可能是:只学习grep,sed和awk。使用这三个工具,你可以解决近 99% linux 系统的文本处理问题,而不需要记住上面不同的命令和参数。而且,如果你已经学会并使用了三者,你就会知道其中的差异。概述awk、grep、sed 是 linux 操作文本的三大利器,也是必须掌握的 linux 命令之一。三者的功能都是处理文本,但侧重点各不相同,其中属 awk 功能最强大,但也最复杂。
    来自:
    浏览:1440
  • 轻量应用服务器

    ,使用远程登录软件登录 Linux 实例,使用远程桌面连接登录 Windows 实例,购买方式,欠费与停服说明,退费说明,销毁实例,使用 WebShell 方式登录 Linux 实例,使用 SSH 登录,网站备案,新功能发布记录,使用 VNC 方式登录 Linux 实例,实例监控,Nginx 服务器证书安装,镜像更新记录,新手指引,使用宝塔 Linux 面板快速迁移网站,使用 Discuz!或 Mac OS 系统通过 SCP 上传文件到 Linux 轻量应用服务器,Linux 或 Mac OS 系统通过 FTP 上传文件到轻量应用服务器,Linux 系统通过远程桌面上传文件到 WindowsWindows 实例,购买方式,欠费与停服说明,退费说明,销毁实例,登录 Linux 实例,登录 Windows 实例,使用 WebShell 方式登录 Linux 实例,使用 SSH 登录 Linux或 Mac OS 系统通过 SCP 上传文件到 Linux 轻量应用服务器,Linux 或 Mac OS 系统通过 FTP 上传文件到轻量应用服务器,Linux 系统通过远程桌面上传文件到 Windows
    来自:
  • 云服务器

    云服务器,Windows 系统通过 FTP 上传文件到云服务器,Linux 或 MacOS 系统通过 SCP 上传文件到 Linux 云服务器,Linux 常用操作及命令,无公网 CVM 通过带公网云服务器,功能与优势,Linux 重装为 Windows 后读取原 EXT 类型数据盘,Windows 重装为 Linux 后读写原 NTFS 类型数据盘,弹性公网IP模式切换,修改 SID 操作说明配置,关于安全组53端口配置的公告,无法登录 Linux 实例,使用远程登录软件登录 Linux 实例,使用 SSH 登录 Linux 实例,使用 VNC 登录 Linux 实例,使用远程桌面连接登录云服务器,Windows 系统通过 FTP 上传文件到云服务器,Linux 或 MacOS 系统通过 SCP 上传文件到 Linux 云服务器,Linux 常用操作及命令,无公网 CVM 通过带公网53端口配置的公告,无法登录 Linux 实例,登录 Windows 实例,使用远程登录软件登录 Linux 实例,使用 SSH 登录 Linux 实例,使用 VNC 登录 Linux 实例,使用远程桌面连接登录
    来自:

扫码关注云+社区

领取腾讯云代金券