首页 > 系统相关 >linux 命令值xargs与tr

linux 命令值xargs与tr

时间:2024-10-29 16:58:20浏览次数:5  
标签:字符 xargs tr 命令 linux txt 输入

提出问题:为什么有了管道符 | ,还需要xagrs

管道符 | 允许将一个命令的输出作为另一个命令的输入。然而,管道符在处理某些类型的输入时存在局限性,特别是当需要将一系列输入项作为单个命令的多个参数时()。

xargs 的出现正是为了解决这个问题。xargs 能够从标准输入(stdin)读取数据,并将这些数据转换为特定命令的参数列表。这使得 xargs 在处理大量输入项时非常有用,特别是当这些输入项需要作为单个命令的多个参数时。

以下是一些 xargs 相对于管道符 | 的优势:

  1. 参数构建:xargs 可以将多个输入项组合成一个参数列表,然后一次性传递给命令。这对于需要处理大量文件或数据的场景特别有用。

  2. 处理复杂输入:xargs 提供了多种选项来处理复杂的输入,比如指定分隔符(-d)、限制每次命令运行的参数个数(-n)以及使用自定义的占位符(-I)。

  3. 安全性:在处理包含空格、换行符等特殊字符的文件名时,xargs 的 -0 选项可以与 find 命令的 -print0 选项结合使用,以确保正确处理这些特殊字符。

  4. 灵活性:xargs 可以与其他命令和工具结合使用,以构建复杂的命令行管道。例如,你可以将 find 命令的输出通过管道传递给 xargs,然后使用 xargs 来执行 rm 命令删除找到的文件。

tr命令

tr 主要用于替换或删除文件中的字符。tr 命令通过从标准输入读取数据,然后对其进行处理,并将结果输出到标准输出(通常是屏幕,但也可以重定向到文件)。

常用选项

  • -c 或 --complement:取字符集的补集,即处理不在指定字符集中的字符。
  • -d 或 --delete:删除指定字符集中的字符。
  • -s 或 --squeeze-repeats:将连续的重复字符压缩为一个。
  • -t 或 --truncate-set1:将 SET1 截断为与 SET2 相同的长度。
tr [OPTION]... SET1 [SET2]

SET1:指定要转换或删除的字符集合。
SET2:指定用于替换 SET1 中字符的字符集合(如果提供)。如果 SET2 的长度小于 SET1,则 SET2 会被重复以匹配 SET1 的长度。如果 SET2 未提供,则 SET1 中的字符会被删除。

示例

  1. 将小写字母转换为大写字母:
echo "hello world" | tr 'a-z' 'A-Z'
  1. 删除文件中的数字:
echo "abc123def456" | tr -d '0-9'
  1. 将连续的空格压缩为一个空格:
echo "This   is    a   test." | tr -s ' '
  1. 使用补集删除所有非字母字符:
echo "Hello, World! 123" | tr -cd 'a-zA-Z'

输出:

HelloWorld

综合示例

echo "file1,txt:file2,txt:file3,txt" | tr ':,' '\n' | xargs -n 2 ls -l

输出结果

ls: cannot access 'file1.txt': No such file or directory
ls: cannot access 'file2.txt': No such file or directory
ls: cannot access 'file3.txt': No such file or directory

拆解

echo "file1,txt:file2,txt:file3,txt" | tr ':,' '\n'

file1.txt
file2.txt
file3.txt
  1. | tr ':,' '\n'

    管道符号|echo命令的输出作为tr命令的输入。tr命令是一个字符转换工具,这里它被用来将输入字符串中的:,替换为换行符\n。注意,虽然这里指定了两个要替换的字符(:,),但只给出了一个替换字符(\n),这意味着:,都会被替换为\n。因此,每个文件名(及其后面的,txt部分)都会被放在新的一行上。

 

标签:字符,xargs,tr,命令,linux,txt,输入
From: https://www.cnblogs.com/rtnb/p/18513923

相关文章

  • Linux压缩和解压文件
    1.linux压缩文件到指定文件夹方法一:使用tar命令压缩文件tar-czvf/目标文件夹/压缩文件名.tar.gz/要压缩的文件或文件夹路径这将把指定的文件或文件夹压缩为一个名为“压缩文件名.tar.gz”的gzip压缩文件,并将该文件保存到指定的目标文件夹。方法二:使用zip命令压缩文件zip......
  • NoiLinux 虚拟机挂载主机共享文件夹
    如果你不知道这是干啥的,参考考场上的noip文件夹,可以实现快捷的内外文件互通需求VMtool如果未安装VMtool可以通过以下命令安装sudoapt-getinstallopen-vm-tools-desktopfuse联网下载的NoiLinux自带VMtool,此时会出现以下提示:open-vm-tools-desktopisalreadythe......
  • Linux更改符号链接
    目录1.删除旧链接2.创建新的符号链接例如我的电脑上有两个版本的cuda,11.8和12.41.删除旧链接rmcuda2.创建新的符号链接ln-s/usr/local/cuda-11.8//usr/local/cuda......
  • Setting up a mobile hotspot on your Samsung Galaxy phone is straightforward
    SettingupamobilehotspotonyourSamsungGalaxyphoneisstraightforward.Herearethesteps:OpenSettings:Swipedownfromthetopofthescreentoopenthenotificationshade,thentapthegearicontoaccessSettings.Connections:TaponConnec......
  • linux 自定义命令
    linux下有多种自定义命令的方式:1、alias方式:也就是别名2、环境变量的方式:将写好的脚本放在对应的目录中,然后将目录放在$HOME/.profile中。3、函数的方式:在$HOME下建立.bash_func文件夹,可使用命令mkdir-p$HOME/.bash_func实现。在$HOME/.bashrc下添加加载函数的代码#在$......
  • Linux安装mysql【超详细】
    一、下载安装包1、查看是否已经安装了MySQLrpm-qa|grepmysql2、查看系统位数getconfLONG_BIT3、下载MySQLMySQL官网地址4、也可以直接在服务器执行指令下载,但是下载速度比较慢。还是自己下载好拷贝过来比较快。wgethttps://dev.mysql.com/get/Downloads/my......
  • rust中Trait的基本使用
    1.trait的基本使用最基本的traitstructPerson{name:String,id:i32,}structTeacher{name:String,id:i32,}traitsayHello{fnsay_hello(&self){println!("Hello!");}}//Person没有重载,就用的默认实现implsayHelloforPers......
  • 如何在Linux中配置防火墙
    在Linux中配置防火墙的步骤:1.使用iptables配置防火墙;2.使用Firewalld配置防火墙;3.配置其他防火墙选项。iptables是一个用于管理IPv4防火墙规则的工具,使用iptables配置防火墙的基本步骤:检查防火墙状态、允许或拒绝流量、保存规则。1.使用iptables配置防火墙iptables是一个用于......
  • Delphi10.3中的TreeView1的使用说明
    mySQL数据库中,所有的DataBase及其对应的Tables;最终效果: 先在设计窗口,新建根结点 再添加层级为Level1级的数据库名DataBases;varRootNode,DBNodes:TTreeNode;//先建立一个TREEVIEW使用的结点对象beginFDQuery1.Active:=false;FDQuery1.SQL.Text:='S......
  • Linux系统换源
    Centos7、Ubuntu系统换源清华大学开源软件镜像站Centos7手动换源使用bash脚本换源一键完成换源Ubuntu手动换源使用bash脚本换源一键完成换源清华大学开源软件镜像站https://mirrors.tuna.tsinghua.edu.cn/直通车:清华大学开源软件镜像站Centos7所使用的Linux......