加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > Linux > 正文

macos – 为什么sed只接收多个文件作为输入时才处理一个文件?

发布时间:2020-12-14 00:01:51 所属栏目:Linux 来源:网络整理
导读:我想用sed操作六个CSV文件 sed -i -e "1d" 1.csv 2.csv 3.csv 4.csv 5.csv 6.csv 要么 sed -i -e "1d" *csv 但是当运行任何这些命令时,仅修改1.csv.但是,sed将2-6.csv的原始文件(备份文件的时间戳保持不变)重命名为2.csv-e,依此类推,并创建一个新文件2.csv,
我想用sed操作六个CSV文件

sed -i -e "1d" 1.csv 2.csv 3.csv 4.csv 5.csv 6.csv

要么

sed -i -e "1d" *csv

但是当运行任何这些命令时,仅修改1.csv.但是,sed将2-6.csv的原始文件(备份文件的时间戳保持不变)重命名为2.csv-e,依此类推,并创建一个新文件2.csv,但这个新文件与2.csv-相同e(和diff:ing 2.csv和2.csv-e不返回差异)(diffing 1.csv和1.csv-e列出了一些变化).

如何让sed接受多个文件作为输入?

这是在OS X上.

解决方法

格伦的答案是大多数人最好和理想的答案. GNU Parallel还有一个替代方案,它看起来更像你试图在你的问题中提出的命令,并且并行运行6份sed(或你想要的任何其他东西):

parallel sed -i -e 1d ::: *.csv

要非常小心,因为它可以非常快速地并行地修改很多东西.当你熟悉它时,你应该添加两个标志,即–dry-run,这样它什么都不做,只显示它会做什么,-k使得输出按顺序排列.因此,更安全的运行方式如下 – 包括对我们处理的文件更具选择性:

parallel --dry-run -k sed -i -e 1d ::: {1..6}.csv

产量

sed -i -e 1d 1.csv
sed -i -e 1d 2.csv
sed -i -e 1d 3.csv
sed -i -e 1d 4.csv
sed -i -e 1d 5.csv
sed -i -e 1d 6.csv

使用自制软件最容易在macOS上安装GNU Parallel:

brew install parallel

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读