从标准输出建立并运行命令行
把从stdin接收到的数据重新格式化
,再将其作为参数提供给其它命令
------------------------------------------------ xargs 选项:
-d 选项
:为输入指定一个定制的定界符
-p 选项
;它使操作具有可交互性:
命令: file * | grep ASCII | cut -f1 -d: | xargs -p vi
此处的 xarg 要求您在运行每个命令之前进行确认。如果您按下 "y",则执行命令。
-t 选项
;使用一个详细模式,显示要运行的命令,是调试过程中一个非常有帮助的选项。
如果传递给 xargs 的输出为空怎么办?考虑以下命令:
命令:file * | grep 12345 | cut -f1 -d: | xargs -t wc -l
wc -l
0
此处,搜索 "12345" 后没有匹配的内容;因此 xargs 的输入均为空,如第二行所示(由于我们使用 -t 这个详细选项而产生的结果)。
-r 选项
;虽然这可能会有所帮助,但在某些情况下,如果没有要处理的内容,您可能希望停止 xargs;如果是这样,可以使用 -r 选项:
命令: file * | grep 12345 | cut -f1 -d: | xargs -t -r wc -l
如果没有要运行的内容,该命令退出。
-n 选项
;修改单个命令行传递的参数个数。例如我们即使向 xargs ls -ltr 传递五个文件,但每次向 ls -ltr 仅传递两个文件。
命令:file * | grep ASCII | cut -f1 -d: | xargs -t -n2 ls -ltr
将多行输入转换为单行输出:
#cat example.txt
1 2 3 4 5 6
7 8 9 10
11 12
#cat example.txt | xargs
将单行输入转换成多行输出:
#cat example.txt | xargs -n 3
1 2 3
4 5 6
....
根据定界符格式化输出:
#echo "splitXsplitXsplitXsplit" | xargs -d X -n 2
split split
split split
-n 2表示一行2个记录(2列)
--------------------------------------------- 实例
example1
描述:输出当前目录下所有符号链接或经过压缩的ASCII文件并显示
命令:file -Lz * | grep ASCII | cut -f1 -d: | xargs ls -ltr
解释:
file -Lz *:用于查找是符号链接或者经过压缩的文件;
输出结果:
anaconda-ks.cfg: ASCII English text
install.log: ASCII text
insall.log.syslog: ASCII text
mbox: ASCII mail text
grep ASCII:用于搜索包含 "ASCII" 字符的字符串并产生;
输出结果:
anaconda-ks.cfg: ASCII English text
install.log: ASCII text
insall.log.syslog: ASCII text
mbox: ASCII mail text
cut -f1 -d:表示采用冒号作为分隔符,并取出第一列。所以尽显示文件名;
输出结果:
anaconda-ks.cfg
install.log
install.log.syslog
mbox
xargs:将上述列表作为参数进行传递,一次传递一个。
xargs ls -ltr:用于接收输出并对其执行 ls -ltr 命令,命令等价于:
ls -ltr anaconda-ks.cfg
ls -ltr install.log
ls -ltr install.log.syslog
ls -ltr mbox
结果:
大家应该都知道了吧。
xargs 本身虽然没有多大用处,但在与其他命令相结合时,它的功能非常强大。
example2
描述:计算当前目录下各个文件行数:
命令:file * | grep ASCII | cut -f1 -d: | xargs wc -l
解释:(无)
结果:
40 anaconda-ks.cfg
452 install.log
53 install.log.syslog
68 mbox
613 total
example3
描述:用vi打开匹配后的文件
命令:file * | grep ASCII | cut -f1 -d: | xargs vi
解释:
该命令使用 vi 逐个打开文件。当您希望搜索多个文件并打开它们进行编辑时,使用该命令非常方便。
example4
描述:快速重命名目录中的文件。
命令:ls | xargs -i mv {} {}.old
解释:
-i 选项告诉 xargs 用每项的名称替换 {}。
-----------------------------------------find 与exec xargs 是常用组合
传送
分享到:
相关推荐
在Linux shell脚本编程中,`printf`是一个非常重要的命令,它用于格式化输出数据,类似于C语言中的`printf()`函数。与`echo`命令相比,`printf`提供了更多的灵活性和控制力,尤其是在处理复杂的输出格式时。这篇文章...
`xargs`命令则常与`find`结合使用,它可以将`find`输出的文件名作为参数传递给其他命令。例如,使用`-exec`删除所有匹配的文件可能需要用户确认,而通过`xargs`传递给`rm`命令则可以直接删除。基本用法如下: ```...
xargs命令是把接收到的数据重新格式化,再将其作为参数提供给其他命令,下面介绍xargs命令的各种使用技巧,一起来看看吧。 一、将多行输入转换成单行输入: [root@host1 test]# echo -e 1 2 3 4 5 \n6 7 8 \n9 10 ...
- `awk '{print $2}'`:`awk`是一种强大的文本处理工具,常用于格式化输出。这里的`awk '{print $2}'`表示打印每行的第二个字段,即进程ID(PID),因为通常情况下,PID位于输出行的第二列。 - `xargs kill -9`:`...
它可以根据模式匹配进行操作,并且具备内置的变量和函数,可以进行复杂的数据分析和格式化输出。 5. **sed命令** (010-sed 用法介绍.PDF): sed是流编辑器,常用于文本替换、删除、插入等操作。它可以逐行处理文件,...
`awk`则是一个强大的文本分析工具,能处理和格式化数据;`sed`是流编辑器,可以在线编辑文件内容。它们广泛应用于日志分析、数据提取和文本替换等任务。 **6. 环境和Shell变量(14环境和shell变量.pdf)** 环境变量...
6. **输出格式化**:如果你需要更整洁的输出,可以利用`printf`进行格式调整,例如: ```bash cat urls.txt | xargs -I {} sh -c 'curl -s --connect-timeout 5 -o /dev/null -w "%s\tCode: %{...
最后,通过管道和文本处理工具来格式化输出结果。 ```sh who | wc -l | sed "s/^/&\n/" who ``` 这里,我们首先使用`who`命令列出所有登录用户,然后通过管道传递给`wc -l`来计算行数(即登录用户的数量),接着使用...
`grep`用于搜索含有特定模式的行,`sed`进行流编辑,`awk`则能处理复杂的文本格式化和分析。这些工具在日志分析、数据提取等方面非常实用。 5. **其他工具**:`01_第一章 文件安全.pdf`讨论了文件权限和所有权,这...
3. **awk**:一个强大的文本分析工具,能处理和格式化输出数据,特别适合处理结构化的文本文件,如日志文件。 4. **find**:这个命令用于在文件系统中查找文件,可以根据名称、大小、时间戳等多种条件进行查找。 5...
- **awk**: 强大的文本处理工具,可用于格式化输出。如`awk '{print $2}'`用来打印出第二列数据。 - **xargs**: 通常与`grep`等命令结合使用,用于读取标准输入中的数据并执行命令。例如`xargs kill -9`用于终止...
7. **AWK的介绍**(009AWK的介绍.PDF):AWK是一种强大的文本分析工具,用于处理和格式化数据。它支持模式匹配和自定义函数,是处理结构化数据的强大武器。 8. **sed的用法**(010sed的用法.PDF):sed是流编辑器,...
AWK是一种强大的文本分析工具,用于处理和格式化数据。它基于模式匹配,可以在输入文件中搜索特定模式并执行相应的动作。AWK支持内置变量、算术和字符串操作,以及自定义函数,非常适合数据处理和报告生成。 4. **...
8.2.11 查询格式化文件名 61 8.2.12 查询IP地址 61 8.3 类名 62 8.4 系统grep命令 62 8.4.1 目录 63 8.4.2 passwd文件 63 8.4.3 使用ps命令 63 8.4.4 对一个字符串使用grep 64 8.5 egrep 64 8.6 小结 65 第9章 AWK...
至于Shell的输入和输出,`echo`命令常用于在终端打印文本,通过`\c`、`\f`、`\t`和`\n`等转义字符控制输出格式。例如,`echo -e "here is a tab\there is two tabs\tok"`会输出带有跳格和换行的字符串。若要输出包含...
在Bash中,我们可以利用`echo`命令打印文本,`read`命令读取用户输入,以及`printf`命令格式化输出。例如,`echo "Hello, $NAME"`会显示“Hello, John”。`read -p "Enter your name: " USER_NAME`会提示用户输入...
`awk`是一种文本分析工具,用于处理和格式化文本文件。它的功能强大,包括模式匹配、字段分割、条件判断等,常用于数据处理和报告生成。 8. **sed**(10-sed.pdf): `sed`(流编辑器)允许在文件或输入流中进行...
1.做自动部署系统时精简的一个脚本,主要功能是清理所有目录的日志 2.根据给定日志目录,删除时间 结合crontab进行清理日志,清理...所以需要增加 –print0 用 null来 作为边界符号,才敢结婚 xargs –o 来格式化输入 使
通过结合`find`和`xargs`,可以实现对文件系统的高效管理和自动化操作,极大地提高了Linux系统管理的灵活性和效率。 #### 结语 `find` 和 `xargs` 是Linux系统管理员不可或缺的工具,它们的强大功能和灵活性使得在...
2. **awk命令**:`awk`是一个强大的文本分析工具,用于处理和格式化文件内容。它可以根据指定的模式匹配行,并对匹配到的行进行操作,如打印、替换或计算字段。 3. **sed命令**:`sed`(流编辑器)用于读取、转换并...