字符串替换为 GSUTIL

String Replace With GSUTIL

我正在尝试使用 GSUTIL 和 sed 删除 GCS 中 .csv 文件中 header(第一)行末尾的管道。下面的命令产生输出 sed: can't read ... No such file or directory

sed 's/58_rxsig"|"/58_rxsig1/' gs://../file.csv

58_rxsig 是 header 行中的最后一个字段名称,所以我的想法是找到文字字符串 '58_rxsig|'并替换为文字字符串 '58_rxsig' 但我显然无法获得正确的语法。

关于如何实现这个的任何想法?

示例输入:

12_word|

期望的输出:

12_word

sed 命令不知道如何从 GCS 读取文件。您需要将文件内容从 GCS 下载到本地文件,然后将其作为最后一个参数提供给 sed,例如如果您的存储桶中有一个名为“a/b/c.txt”的对象:

gsutil cp gs://bucket/a/b/c.txt my/local/directory/
sed <your flags and arguments here> my/local/directory/c.txt

另一种方法是使用 gsutil cat 并使用管道将流重定向到 sed 命令。

gsutil cat gs://<bucket>/<blob> | sed <flags & arguments>