【问题标题】:Is there a way to double print a file in bash? [duplicate]有没有办法在bash中双重打印文件? [复制]
【发布时间】:2021-08-25 07:06:40
【问题描述】:

我是 Linux 和编程的新手。我的问题如下:我有一个列出 3 列的文件。我想交换第一列和最后一列,打印它以在一行中提示 AND 到一个新文件。所以我交换了列并将其打印以提示 OR 到文件。

$ awk -F, ' { t = $1; $1 = $3; $3 = t; print; } ' OFS=, liste.csv

这是我打印它以提示的基线。但似乎不可能在同一命令行中将其打印到新文件中。 有没有人有这个想法? 以下是一些无效的示例:

$ awk -F, ' { t = $1; $1 = $3; $3 = t; print; } ' OFS=, liste.csv | >liste2.csv

$ printf "$(sudo awk -F, ' { t = $1; $1 = $3; $3 = t; print; } ' OFS=, liste.csv > liste2.csv)"

$ cat $(sudo awk -F, ' { t = $1; $1 = $3; $3 = t; print; } ' OFS=, liste.csv > liste2.csv)

我想你明白了我的要求。 谢谢!

【问题讨论】:

  • 非常感谢。双重打印将完美地完成这项工作!

标签: bash awk printf cat


【解决方案1】:

使用tee 中提到的How to redirect output to a file and stdout 命令

或者,通过在现有的print 之外添加print > "liste2.csv" 将其重定向到awk 本身,以便在stdout 上显示

【讨论】:

    【解决方案2】:

    打印它以在一行中提示 AND 到一个新文件

    这听起来像是 tee 的任务。假设

    awk -F, ' { t = $1; $1 = $3; $3 = t; print; } ' OFS=,  liste.csv
    

    确实会产生正确的输出到标准输出,这个

    awk -F, ' { t = $1; $1 = $3; $3 = t; print; } ' OFS=,  liste.csv | tee liste2.csv
    

    应该写入liste2.csv 和标准输出

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2010-09-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-01-28
      • 2012-03-06
      相关资源
      最近更新 更多