首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

为什么xargs -L产生正确的格式,而xargs -n不能?

xargs是一个常用的命令行工具,用于将标准输入的数据作为参数传递给其他命令进行处理。xargs命令有多个选项,其中包括-L和-n。

xargs -L选项的作用是将标准输入的数据按行分割,并将每行数据作为参数传递给后续的命令。这意味着每次执行命令时,只会将一行数据作为参数传递给命令。这种方式适用于需要将每行数据作为独立的参数进行处理的情况。

xargs -n选项的作用是将标准输入的数据按照指定的参数个数进行分割,并将分割后的数据作为参数传递给后续的命令。例如,xargs -n 3表示每次执行命令时,将3个参数作为一组进行传递。这种方式适用于需要将多个参数作为一组进行处理的情况。

为什么xargs -L产生正确的格式,而xargs -n不能?

这是因为-L选项将每行数据作为独立的参数传递给命令,确保了参数的正确格式。而-n选项将指定个数的参数作为一组传递给命令,如果标准输入的数据行数不是参数个数的整数倍,就会导致参数的格式不正确。

举个例子来说明:

假设有一个文件input.txt,内容如下:

代码语言:txt
复制
apple
banana
orange

使用xargs -L 1 cat命令,将每行数据作为参数传递给cat命令进行处理,结果如下:

代码语言:txt
复制
$ cat input.txt | xargs -L 1 cat
apple
banana
orange

可以看到,每行数据都被独立地传递给了cat命令。

而使用xargs -n 2 cat命令,将每两行数据作为一组参数传递给cat命令进行处理,结果如下:

代码语言:txt
复制
$ cat input.txt | xargs -n 2 cat
cat: apple: No such file or directory
banana orange

可以看到,由于只有3行数据,无法凑够两个参数一组,导致第一行的数据被当作文件名处理,而不是作为参数传递给cat命令。

综上所述,xargs -L选项适用于需要将每行数据作为独立参数进行处理的情况,而xargs -n选项适用于需要将多个参数作为一组进行处理的情况。在使用xargs命令时,根据具体的需求选择合适的选项。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

Requests库(二十)为什么请求json字段传入dict格式正确不是json格式

Requests库(十五)一文解决解析text/html格式返回数据 Requests库(十六)一文展示如何利用Requests请求xml格式接口 Requests库(十七)一文展示如何利用Requests...本次分享源于在微信群里有人问一个问题,为什么在requests请求时候,参数中有一个json字段,传入dict就可以正常,传入json dumps后数据请求就报错。...原因出现在哪里 首先来说,按照我们习惯来说的话,有json参数,就应该传入json字符串,但是我们传入json字符串就请求发送后了,预期不是我们想要,但是我们传入dict 结果就是正确...,按说,不应该啊,那么这是为啥呢,看到这里,我想法就是是不是内部做了什么处理呢,于是乎开始查找问题根本。...问题答案就是在这里,内部给你处理好了,当初我在群里也是这么回复,其实问题很简单,查看里面的代码怎么实现就知道了。里面的代码很简单,也很好找,顺着思路找下去即可。 写在最后 ?

92320

Shell脚本之常用Linux命令使用介绍

xargs 是一个强有力命令,它能够捕获一个命令输出,然后传递给另外一个命令, Tips: 关键是由于很多命令不支持|管道来传递参数,日常工作中有有这个必要,所以就有了 xargs 命令 语法选项.../sk.sh -p {} -l cat arg.txt | xargs -I {} echo $* "-p123" {}"- l123" -p aaa -l -p bbb -l -p ccc -l...DOS格式文本文件在Linux底下,用较低版本vi打开时行尾会显示^M,而且很多命令都无法很好处理这种格式文件,Unix格式文本文件在Windows下用Notepad打开时会拼在一起显示。...因此产生了两种格式文件相互转换需求,对应将UNIX格式文本文件转成成DOS格式是unix2dos命令。 安装 系统默认不带该命令,我们需要从软件仓库中进行下载使用。...,源文件不变,则可以使用-n参数。

1.2K20

一天一个 Linux 命令(22):xargs 命令

xargs 可以将管道或标准输入(stdin)数据转换成命令行参数,也能够从文件输出中读取数据。 xargs 也可以将单行或多行文本输入转换为其他格式,例如多行变单行,单行变多行。...之所以会有这个命令,主要是因为很多命令不支持|管道来传递参数,日常工作中却有这个必要,所以就有了 xargs 命令。 二、格式说明 xargs [OPTION]......建议使用 -L 选项,因为其符合 POSIX 标准 -n, --max-args=MAX_ARGS 表示命令在执行时候一次使用参数最大个数 -o, --open-tty 在执行命令之前,在子进程中重新打开...一般和 -n 或 -L 选项一起使用 -p, --interactive 当每次执行一个 argument 时候询问一次用户 --process-slot-var=NAME 将指定环境变量设置为每个正在运行子进程中唯一值...所以要避免包含换行符或其他特殊字符文件名出现问题,请始终使用find-print0选项,这样可以使find打印完整文件名,配合xargs命令使用-0或者--null选项可以正确执行。

1.9K20

shell 学习笔记(17)

nohup/setsid 无疑是临时需要时最方便方法, disown 能帮助我们来事后补救当前已经在运行了作业, screen 则是在大批量操作时不二选择了。...:export -p 1661.获取 ls -lrt 最后一列: ls -1 会将 ls -l 格式最后一列打印出来,等价于 ls|xargs -0 1662.用 nc 与给定主机端口进行一次...(glo.txt) 2/这样也行 1667.在历史记录里查询某个命令打印它,不是执行它: !...-type f -print0 | xargs -0 du -h | sort -hr | head -10 #递归找出10个当前目录下最大文件 1682.你可以 ls -l /proc.../pid/fdinfo/ ,观察那个文件读到哪了 # cat /proc/XXXX/fdinfo/Y 1683.xargs 行列合并:直接xargs为合并,xargs -n1 为拆分: echo

1.1K80

生物信息常用文件格式

数值可以用于计算,字符串不能用来计算,逻辑值用来判断等。 在生物信息分析,基因组数据主要都是字符串类型,所以,生物信息分析往往也被认为是字符串处理。...三、CSV 文件与 TSV 文件 生物信息中会有大量表格文件产生,例如 gff 文件,gtf 文件,bed 文件,sam 文件,vcf 文件,blast 比对结果,blat 结果,以及很多生物软件产生结果都是表格格式...输入文件就是我们要处理原始文件,比如测序序列,将数据交给软件,最终软件正确输出结果就是我们要结果。如果软件执行有问题,则会输出错误提示。...xargs 是一个强大命令,它能够捕获一个命令输出结果,然后传递给另外一个命令。之前管道也是传输数据作用,但是 xargs 与管道不同,管道传递是数据流, xargs 则能够进行参数传递。.../data/xargs.txt | xargs -n 3 #2分割符 cat /etc/passwd | xargs -d ":" #将一行内容分成三列 echo {a..z} | xargs -n

2.1K10

Xargs入门与进阶

[TOC] xargs 命令(重要) 描述:它是命令传参过滤器、命令组合工具用作替换工具,读取输入数据重新格式化后输出,它擅长将标准输入数据转换成命令行参数,而且能够处理管道或者stdin并将其转换成特定命令命令参数...,也可以将单行或多行文本输入转换为其他格式,例如多行变单行以及单行变多行; xargs默认命令是echo,空格是默认定界符 意味着通过管道 | 传递给xargs输入将会包含换行和空白,不过通过xargs...m n o p q r s t u v w x y z #示例1.多行输入单行输出和指定行输出 cat test.txt | xargs # a b c d e f g h i j k l m n...WeiyiGeek.示例1 #示例3.读取stdin将格式化后参数传递给命令 #假设一个命令为 sk.sh 和一个保存参数文件arg.txt: #!...-type f -name "*.php" -print0 | xargs -0 wc -l #统计一个源代码目录中所有php文件行数 find .

95532

对find xargs grep和管道深入理解

参数与标准输入: 这两个词我们在Linux命令中是很常见。但是参数和标准输入其实是有区别的。我们日常使用很多命令,例如ls -lah .中。l, a, h ,.都是命令ls参数。...通常来讲标准输入流数据来源就是我们终端输入。在Linux命令中,有些命令可以接收标准输入,有些是不能。像上面的ls,就是只能接收参数,不能接收标准输入。...这里要注意,后面的命令接收是标准输入,所以如果命令不支持接收标准输入,那么就不能直接使用管道,例如常用ls命令,只能使用参数,不能使用标准输入,所以[command] | ls是不能使用。...命令如echo或cat就可以。那么肯定有方法来实现这些不能使用标准输入命令与管道结合,这时候xargs便出场了。...xargs命令: xargs命令通俗来讲就是将标准输入转成各种格式参数,所以命令[command 1] | xargs [command 2]就是将command 1标准输出结果,通过管道|变成xargs

58720

find命令高级用法

/test -prune -o -name "*.txt" 这里查找txt文件,但是排除test目录下txt文件。但是注意./test不能写成./test/,否则结果将不正确。测试时候,发现....find -name "*test" |xargs grep "hello" #查找包含hello字符串test文件 xargs后面跟是要执行命令,这里只是简单举例。...查找名为test符号链接文件: find ./ -name "*test" -a -type l 实例4.查找log文件以外文件: find ./ !...如果要查找出比文件1更新,比文件2旧文件,只需要利用组合条件即可。 查找结果以特定格式输出 前面的多数查找结果只是列出路径和文件名,如何获取更多信息呢?...例如,将查找到log文件文件名,访问时间,权限信息,大小等信息输出: find ./ -name "*.log" -printf "%f %a %M %s\n" locate.log Sat Nov

1.2K20

Linux系统入门系列之二

“&&”和“||”来连接,具体如下: cmd1&& cmd2:若cmd1执行正确则开始执行cmd2,否则不执行; cmd1|| cmd2:若cmd1执行正确则不执行cmd2,否则执行。...具体示例如下: 3.2管道命令 管道命令(pipe)是由多个命令组成定向处理流程,但与命令连续执行或判断执行不同,后续命令仅能处理前面命令传来正确信息,不同命令间使用“|”界定。...,使用示例如下: 命令ls -l只能作用于文件和路径,并不能处理标准输入内容,也即不支持管道命令,因此会将所有文件列出。...然而xargs可以将标准输入内容转换为指令作用对象。...该命令还可以产生命令参数,例如-p可以提醒后面命令意义,用户可以输入y(yes)或n(no)来选择是否执行: xargs具体参数如下: -n后面加次数,表示命令在执行时候一次用argument

37930

利用find、grep和xargs批量处理文件及文本

语法格式: find [查找范围] [参数] 参数: -name:按照文件名字查找文件(可使用通配符*) -iname:按照文件名字查找文件(忽略大小写) -size:按照文件大小查询文件 +:查找大于输入大小文件...语法格式: grep [参数] [匹配规则] [操作对象] 参数: -n:过滤文本时显示过滤内容在文件内行号 -A:匹配成功后同时显示匹配行n行 -B:匹配成功后同时显示匹配行n行 -C:匹配成功后同时显示匹配行前后...n行 -c:只显示匹配成功行数 -o:只显示匹配成功内容 -v:反向过滤 -q:静默输出 -i:忽略大小写 -l:匹配成功后打印文件名称 -R|-r:递归匹配 -E:使用拓展正则,等价于egrep...xargs命令 xargs是给命令传递参数一个过滤器,也是组合多个命令一个工具。...xargs可以读取标准输入和管道中数据,用于弥补有些命令(如echo、kill、rm、mkdir,ls)不能从管道中读取数据不足; ---- 创建测试文件例子: test0/test0.log和test1

2.3K20

Linux常用命令11 - xargs

n (--max-args)选项指定传递给给定命令参数数目。 xargs 根据需要多次运行指定命令,直到所有参数都用完为止。 在下面的示例中,从标准输入中读取参数数目被限制为1。...echo "file1 file2 file3" | xargs -n 1 -t touch 从下面的详细输出中可以看到,touch 命令针对每个参数分别执行: touch file1 touch...xargs 命令还可以从文件不是标准输入中读取项。...ips.txt 8.8.8.8 1.1.1.1 接下来还使用-l1选项,它指示 xargs 一次读取一行。 如果省略此选项,xargs 将把所有 ip 传递给单个 ping 命令。...xargs 可以使用-0,(-null)选项正确地解释这个输出。 在下面的示例中,find 将打印/var/www/中所有文件完整名称。

1.2K20

Linux基础知识之xargs命令

昨天在给服务器做年终“大扫除”整理时,发现有个目录下因为文件过多删除失败,最终使用 xargs 才搞定,于是顺便来记录下。...在执行某些命令时,当 Linux 某个目录下文件过多就会因为“参数列表过长”报错无法执行。...比如,我要清空/var/spool/clientmqueue/下庞大数量临时文件,如果直接执行 rm  -f  *,有时就会会出现“参数列表过长”错误提示,因为 linux 下一般命令参数总长度不能超过...(例二)   -p 当每次执行一个argument时候询问一次用户。(例三)   -n num 后面加次数,表示命令在执行时候一次用argument个数,默认是用所有的。...-l  同-L   -d delim 分隔符,默认xargs分隔符是回车,argument分隔符是空格,这里修改xargs分隔符(例九)   -x exit意思,主要是配合-s使用。

1.4K120

shell脚本中常用命令复习

-r: 逐层遍历目录查找 -C: 显示匹配行前后多少行 -l:只列出匹配文件名 -L:列出不匹配文件名 -e: 使用正则匹配 -E:使用扩展正则匹配...) vim ~/.bashrc alias grep='grep --color=auto' 注意:如果希望你对环境变量设置立刻生效,可以使用以下命令不需要重启计算机 source ~/.bashrc...xargs 上一个命令输出作为下一个命令命令行参数 回顾: linux 命令格式 命令 命令选项 参数 ls -l / ======================== xargs 可以将管道或标准输入...2 3 4 这样就明白使用xargs -a 为什么读取文件时候会把文件中所有内容都输出了吧 [root@zutuanxue ~]# xargs -a 1 -p echo 1 2 3 4 5 6...n 同理为什么把文件中所有行按一行输出呢,原因就是默认输出所有 [root@zutuanxue ~]# xargs -a 1 -n3 1 2 3 4 5 6 7 8 9 10 [root@zutuanxue

80810
领券