【问题标题】:Delimit output created using a grep command分隔使用 grep 命令创建的输出
【发布时间】:2019-11-26 06:02:12
【问题描述】:

我想运行一行代码来创建一个文本到以逗号分隔的文件的列输出。

我创建了一个文件,该文件导致以逗号分隔的格式创建输出。所以所有数据都在 A 列中,由, 分隔。 该文件是apilist.xls 我想添加一行代码,将此处的数据取出并将数据分离到列中,类似于列中的 excel 命令文本。

我试过了:

$ cat apilist.xls | tr "\\t" "," > apilist.csv

这给出了消息:

bash: $: 找不到命令

它创建了apilist.csv 文件,但其中没有数据。

关于如何推进这件事有什么建议吗?

$ cat apilist.xls | tr "\\t" "," > apilist.csv

分隔输出 - 将数据从一列移动到多列。

【问题讨论】:

  • 如果您的输入文件已经用逗号分隔,为什么还要tr "\t" ","grep 将在您的问题中扮演哪个角色?另外,粘贴一些示例数据作为输入,以及输入的预期输出。
  • 看来你运行的是下面的命令$而不是cat ...
  • $ 是一个通用的 shell 提示符,而不是您实际键入的命令...如果您看到类似 $ foo 的答案,这意味着 foo 正在运行交互式 shell 会话。
  • 输入 - 非流动标志、异常子类型、主 ID、ID_GLOBAL、ID_SEDOL1、ID_UNIQUE、SECURITY_TYP、FIGI LAST_UPDATE_DT、FIGI PX_LAST、SEDOL LAST_UPDATE_DT、SEDOL PX_LAST、UNIQUE LAST_UPDATE_DT、UNIQUE PX_LAST、PRICING_SOURCE ,CRNCY,QUOTED_CRNCY,FIGI SEDOL PRICE CHECK,FIGI BBU PRICE CHECK,SEDOL BBU PRICE CHECK,,PrimaryIdentifier,SUBSCRIBER,PRICE_DATE,SERVICE_PRICE,PRICING_SOURCE,PRICE_CRNCY 在 A 列中
  • illiquid flage异常子类型主id id_global id_tyol1 id_unique security_typ figi plast_update_dt figi px_last sedol last_update_dt sedol px_last唯一last_update_dt唯一px_last pucing_source crnce quict_source crnce quict_source crnce quicing_source crnce quict_source crnce quict_crncy figol价格检查Figbu价格检查Sedol BBU价格检查PrimityIndi​​fier Cl_subscriber Price_date service_price PRICING_SOURCE PRICE_CRNCY - 以逗号分隔的输出

标签: shell grep git-bash delimited


【解决方案1】:

您需要先将 .xls 文件转换为 .csv 文件,然后才能对其进行处理。这里有一些转换文件的方法:https://linoxide.com/linux-how-to/methods-convert-xlsx-format-files-csv-linux-cli/

然后您可以使用 awk 在数据之间创建用逗号分隔的列。这是假设您有三列用逗号分隔 - 您需要编辑以下命令以满足您的需求:

awk -F ',' '{printf("%s %s %s\n", $1, $2, $3)}' input_file

【讨论】:

  • 当我实际将输入文件从 .xls 更改为 .csv 时,分隔操作会自动发生,我不需要进一步的代码来启动它。我仍然需要进一步测试,但现在我认为这是关闭/回答。感谢大家的意见。
  • CLI 无需任何其他应用程序即可读取 .csv,而不是 .xls 文件。听起来不错,它现在正在工作。
猜你喜欢
  • 2012-02-29
  • 2020-07-17
  • 1970-01-01
  • 2018-06-15
  • 1970-01-01
  • 1970-01-01
  • 2021-03-29
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多