xargs 是给命令传递参数的一个过滤器,也是组合多个命令的一个工具,它能够捕获一个命令的输出,然后传递给另外一个命令。...之所以会用到这个命令,关键是由于很多命令不支持管道来传递参数,而日常工作中就有这个需要,所以就有了 xargs 命令。...我们经常会用grep命令在文件中查找需要的内容,比如现在一个文件夹里面有9个文件,有三种格式txt, csv和gz压缩文件。 ? 123里面存的内容都一样为 ? 456里面存的内容也一样为 ?...如果我现在要从所有的文件里面找“apple” grep "apple" * 我会得到下面的结果,你会发现grep不能从gz文件中查找内容 123.csv:apple 123.txt:apple 456...这个时候xargs就派上用场了 find ./ -name "123*" | xargs zgrep -n "apple" 同时用上zgrep,这样gz文件也一起找了 ./123.txt.gz:1:apple
有目标执行,所以 1 “一些命令”我选用shell function来实现,在其中读了$1作为本次处理的目标 2 “所有目标”我选用xargs;如果选Parallel还得额外安装 结果发现xargs在切分...“以空格为分隔符”的字符串的时候,GNU版本默认不切分,结果把 整个“含空格分隔符的字符串”传给函数,执行了一次,而函数里又选了$1作为本次执行 目标,其综合结果就是只对列表中第一个目标执行了一遍 更惨的是我对比的时候是在...Mac上做的对比,怎么看怎么顺眼…… 最后请教同事,用xargs的-d参数解决的 This manual page documents the GNU version of xargs....single quotes or a backslash) or newlines GNU xargs的manpage说支持blanks 按说空格也应该可以啊…… xargs.c的read_line函数里...但是有网友指出:按照POSIX标准、GNU xargs的文档,开启-I就是强制一整行的,我的用法不清真。对此我只能说:满足标准但是不满足需求啊,为什么输出端的参数会影响输入端的行为呢?
-name '*.py' |xargs grep test 刚开始的时候,我不熟悉xargs命令,所以直接使用的命令是 find ....这时cat命令接收标准输入完毕,执行命令,也就是将刚才键入的内容输出的标准输出上(屏幕)。 管道: 管道的作用是将前面命令的标准输出作为后面命令的标准输入。...xargs命令: xargs命令通俗来讲就是将标准输入转成各种格式化的参数,所以命令[command 1] | xargs [command 2]就是将command 1的标准输出结果,通过管道|变成xargs...-name '*.py' |grep test,是将前面命令的标准输出作为标准输入传给了grep test,那么grep是从这些标准输入寻找test字符,也就是文件名组成的字符流 $ find ....-name '*.py' |xargs grep test,通过xargs,find得到的文件名成为了参数传给后面的grep,那么这时候这些文件名就是实实在在的文件标识,grep接收后会按正常的使用方式在各文件中搜寻字符串
n行 -c:只显示匹配成功的行数 -o:只显示匹配成功的内容 -v:反向过滤 -q:静默输出 -i:忽略大小写 -l:匹配成功后打印文件的名称 -R|-r:递归匹配 -E:使用拓展正则,等价于egrep...xargs命令 xargs是给命令传递参数的一个过滤器,也是组合多个命令的一个工具。...-maxdepth 2 -name *.log | xargs grep "11" 查找当前路径下.log文件中包含11和22的文件: find ....-maxdepth 2 -name *.log | xargs grep -E "11|22" 替换 find与sed的配合使用: 替换当前路径下.log文件中的22,替换为55: find ....-maxdepth 2 -name *.sv | xargs rm 结语 find,grep,sed,xargs等更多功能,可自行查阅。
tail -f xxx.log | grep aaaa | grep bbbb 发现没有日志输出 但log中的那条记录包含aaaa 和 bbbb,就是说tail -f xxx.log | grep aaaa...可以输出,tail -f xxx.log | grep bbbb可以输出 对日志记录做多次grep过滤输出,格式如下: tail -f log | grep xxx | grep yyy 发现grep失效...google研究了一下,原因如下: 管道 | 是全缓冲的,一般来说buffer_size为4096,有些是8192。不管具体值多少,只有buffer_size满了,才会看到输出。...在操作里 >>file 这个操作也是全缓冲的。调整如下 tail -f log | grep --line-buffer xxx | grep --line-buffer yyy 结果输出正常。...grep当带上了 --line-buffer 的时候,每输出一行,就刷新一次。 在unix里,块设备和普通文件,以及管道都是全缓冲的。
1 grep 文本搜索 grep match_patten file # 默认访问匹配行 常用参数: -o 只输出匹配的文本行 VS -v 只输出没有匹配的文本行 -c 统计文件中包含文本的次数 grep...-R -n 2 匹配多个模式 grep -e "class"-e "vitural" file 3 grep输出以作为结尾符的文件名:(-z) grep "test" file* -lZ| xargs...-0 rm 2 xargs 命令行参数转换 xargs 能够将输入数据转化为特定命令的命令行参数;这样,可以配合很多命令来组合使用。...比如grep,比如find; 将多行输出转化为单行输出 cat file.txt| xargs 是多行文本间的定界符 将单行转化为多行输出 cat single.txt | xargs -n 3 -n:...指定每行显示的字段数 xargs参数说明 -d 定义定界符 (默认为空格 多行的定界符为 ) -n 指定输出为多行 -I {} 指定替换字符串,这个字符串在xargs扩展时会被替换掉,用于待执行的命令需要多个参数时
1、Python 1.1 format方法: 2.7版本以上直接用format设置千分位分隔符 Python 2.7 (r27:82500, Nov 23 2010, 18:07:12) [GCC 4.1.2...6、Refer: [1] shell、perl、python 千分位 逗号分隔符输出 http://wenzhang.baidu.com/page/view?
根据man手册, xargs的作用是 “xargs从stdin读入每一条, 并且以空白字元或断行字元作为分辨, 将stdin的条目分隔成为 arguments....因为是以空白字元作为分隔, 所以如果有一些档名或者是其他意义的名词内含有空白字元的时候, xargs 可能会误判, 如果需要处理特殊字符, 需要使用-0参数进行处理.”...可以看到不加xargs时, 只会将find的结果打印出来. 加上xargs, 会将find找到的cs文件的内容显示出来....这里就可以看出xargs 和 管道直接传的一个重要区别: 管道是实现”将前面的标准输出作为后面的标准输入”. xargs是实现”将标准输入作为命令的参数”. 所以 find ....结论 find, xargs和wc联合使用, 查找代码行数的思路如下: find: 负责找到所有符合要求的cs文件路径. xargs: 将cs文件路径以命令参数的形式传给wc.
grep 是一种强大的命令行工具,用于在一个或多个输入文件中搜索与正则表达式匹配的行并将每个匹配的行写入标准输出。...在以下示例中,字符串games出现在行首的行被排除在外: > grep -v "^games" file.txt 命令的输出可以grep通过管道过滤,只有匹配给定模式的行才会打印在终端上。...例如,要打印出系统上所有正在运行的进程,除了以用户root身份运行的进程,你可以过滤ps 命令的输出: > ps -ef | grep -wv root 排除目录和文件 有时,当使用-r或-R选项执行递归搜索时...请将排除的目录括在大括号中,并用逗号分隔,不要有空格。...{png,jpg} rumenz * 相关文章 linux之grep使用技巧 linux中grep命令的12个实际例子
在说xargs命令之前,先说两句Linux中的管道(pipe)。 管道负责单向连接前一个程序的标准输出与后一个程序的标准输入,其本质是一个共享文件。...还有很多命令(比如最常见的mkdir、rm、cp等等等)都不会从标准输入读取内容,这时如果在管道符后加上xargs,再加上要执行的命令,那么前一个程序的标准输出就会作为后一个程序的参数,而不是标准输入了...-name '*.java' | xargs grep Impl 同样地,上面例子中的kill命令应该改写成: ps aux | grep redis-cli | grep -v grep | awk...自定义分隔符 xargs默认用IFS(inner field separator,即内部域分隔符,包含空格、制表符、换行符)分割上一个程序的标准输出。...'作为分隔符。
1.功能: xargs可以将stdin中以空格或换行符进行分隔的数据,形成以空格分隔的参数(arguments),传递给其他命令。...因为以空格作为分隔符,所以有一些文件名或者其他意义的名词内含有空格的时候,xargs可能会误判。简单来说,xargs是给其他命令传递参数的一个过滤器,是构建单行命令的重要组件之一。...-d , --delimiter=: xargs处理标准输入默认是按换行符和空格作为分隔符,输出arguments的分隔符是空格,这里修改xargs处理标准输入时的分隔符。...echo 01234 01234 (6)将文件内容以空格分隔同行输出。...9 命令解释: ps -ef|grep spp用于查找包含spp的进程,awk '{printf "%s ",$2,FNR}将目标进程ID打印输出,xargs kill -9则将目标进程ID作为参数传递给
grep 是一种强大的命令行工具,用于在一个或多个输入文件中搜索与正则表达式匹配的行并将每个匹配的行写入标准输出。...默认情况下,grep区分大小写。这意味着大写和小写被视为不同的字符。要在搜索时忽略大小写,请grep使用该-i选项进行调用。 如果搜索字符串包含空格,则需要将其括在单引号或双引号中。...在以下示例中,字符串games出现在行首的行被排除在外: > grep -v "^games" file.txt 命令的输出可以grep通过管道过滤,只有匹配给定模式的行才会打印在终端上。...例如,要打印出系统上所有正在运行的进程,除了以用户root身份运行的进程,你可以过滤ps 命令的输出: > ps -ef | grep -wv root 排除目录和文件 有时,当使用-r或-R选项执行递归搜索时...,并用逗号分隔,不要有空格。
与管道的区别 管道可以实现:将前面的标准输出作为后面的 标准输入 管道无法实现:将前面的标准输出作为后面的 命令参数 $ cat /etc/passwd | grep root # grep命令可以接受标准输入作为参数...分隔符 xargs会将前一个命令的标准输出转换成命令参数,但很多人可能不知道的是,xargs的标准输入中出现的“换行符、空格、制表符”都将被空格取代 xargs默认的分隔符是空格 还可以使用-...-name '*.log' -print0 | xargs -0 rm -f xargs提供了-0选项,允许将NULL作为分隔符,而find命令也心有灵犀地提供了对应的选项来产生以NULL字符作为分隔符的输出...find命令提供的对应方法是-print0选项,在文件名之后输出NULL,而不像-print选项那样输出换行符(换行符会被xargs替换成空格)。...xargs的-0选项不仅可以将分隔符从默认的空格变成NULL,还会将单引号、双引号、反斜线等统统默认为是普通字符。
Linux中的xargs xargs将参数作为标准输入传递给指定程序。它的一个应用场景是:一些程序无法从管道中读取输入,比如rm、kill等等,在需要使用管道时,可以使用xargs命令。...下面的例子中,ls -l命令并不会理会now.txt,而是直接输出目录中的文件列表: $ echo 'now.txt' | ls -l total 2072 -rw-rw-r-- 1 tom tom 2097152...处理这个情况,用管道将echo输出传给xargs作为参数,xargs将这些参数作为ls -l的标准输入: $ echo 'now.txt' | xargs ls -l -rwxrwxr-x 1 tom...tom 14 Jun 12 12:18 now.txt -i命令选项使xargs具有插入功能,使用{}代表参数的占位符: $ find -maxdepth 1 -type f '!'...12 12:18 now.txt.bk 在一些情况下,xargs没有从管道中得到内容,但是其之后的命令还是会运行: $ find ./ -empty $ find ./ -empty | xargs ls
管道命令的作用,是将左侧命令(cat /etc/passwd)的标准输出转换为标准输入,提供给右侧命令(grep root)作为参数。...$ echo "hello world" | echo 上面的代码不会有输出。因为管道右侧的echo不接受管道传来的标准输入作为参数。...四、-d 参数与分隔符 默认情况下,xargs将换行符和空格作为分隔符,把标准输入分解成一个个命令行参数。...find命令有一个特别的参数-print0,指定输出的文件列表以null分隔。然后,xargs命令的-0参数表示用null当作分隔符。...所以,10个阿拉伯数字运行了五次echo命令,输出了五行。 九、-I 参数 如果xargs要将命令行参数传给多个命令,可以使用-I参数。 -I指定每一项命令行参数的替代字符串。
数据去重: uniq 文本数据合并: paste 数据输出: tee 数据处理: xargs 一、 数据处理命令 1、grep: 负责从数据源中检索对应的字符串,行过滤。...必须是一个以空格分隔的标志,当xargs分析到含有flag这个标志的时候就停止。...-d delim 分隔符,默认的xargs分隔符是回车,argument的分隔符是空格,这里修改的是xargs的分隔符。...2 3 4 这样就明白使用xargs -a 为什么读取文件的时候会把文件中的所有内容都输出了吧 [root@zutuanxue ~]# xargs -a 1 -p echo 1 2 3 4 5 6...<< 追加输出 管道命令 |: 管道符 上一个命令的输出作为下一个命令的输入 cat filename | grep "abc" 10、组合命令实战 job1: 检索本机的
而管道命令(|)的作用,是将左侧命令的标准输出转换为标准输入,提供给右侧命令作为参数使用。...比如,我们日常使用的 echo 命令就不接受管道传参。而 xargs 命令的作用,就是将标准输入转为命令行参数。...xargs基本用法 # grep命令接受管道传参 > cat /etc/passwd | grep root # echo命令不接受管道传参 > echo "hello rumenz" | echo...-d指定分隔符,默认使用空格分割 # 空格作为分隔符 $ echo "one two three" | xargs mkdir # 指定制表符\t作为分隔符 $ echo -e "a\tb\tc" |...y -0 表示用 null 当作分隔符 find命令有一个特别的参数-print0,用来指定输出的文件列表以null作为分隔符 > find /path -type f -print0 | xargs
管道命令的作用,是将左侧命令(cat /etc/passwd)的标准输出转换为标准输入,提供给右侧命令(grep root)作为参数。...$ echo "hello world" | echo 上面的代码不会有输出。因为管道右侧的 echo 不接受管道传来的标准输入作为参数。...-d 参数与分隔符 默认情况下,xargs将换行符和空格作为分隔符,把标准输入分解成一个个命令行参数。...find 命令有一个特别的参数 -print0,指定输出的文件列表以 null 分隔。然后,xargs 命令的 -0 参数表示用 null 当作分隔符。...所以,10 个阿拉伯数字运行了五次 echo 命令,输出了五行。 -I 参数 如果 xargs 要将命令行参数传给多个命令,可以使用 -I 参数。 -I 指定每一项命令行参数的替代字符串。
is a test 3 Are you like awk This's a test 10 There are orange,apple,mongo # 指定,为分隔符,在test中查找,并且输出分隔之后的每行的第一...Expression Print(全局正则表达式打印) # 输出test.txt中搜索含有'abc'或'Abc'的行 grep '[aA]bc' test.txt # 输出test.txt中搜索含有'...:extended grep等于grep -E,支持扩展的正则表达式 命令合成 # 在当前目录下查找名称后缀为.log的文件,并且将输出转换为一行(xargs),找到abc。...-name "*.log" | xargs grep -i -n "abc" # -l输出匹配的文件名,不输出匹配行;-R表示递归目录;-Z表示文件名间使用null进行分隔 # -0表示xargs只格式化一个文件...fgrep -lRZ "1.2.3.4" . | xargs -0 sed -i -e "s/1.2.3.4/5.6.7.8" 总结 三个命令的运用形式 grep ‘字符’ 文件 sed ‘命令
领取专属 10元无门槛券
手把手带您无忧上云