首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何将HDFS文件中的文本替换为其他文本

如何将HDFS文件中的文本替换为其他文本
EN

Stack Overflow用户
提问于 2017-03-16 01:39:15
回答 1查看 7.7K关注 0票数 10

我在UNIX文件系统中有file.txt。其内容如下:

代码语言:javascript
复制
{abc}]}
{pqr}]}

我想将此file.txt转换为:

代码语言:javascript
复制
[
{abc}]},
{pqr}]}
]

我可以使用以下shell脚本完成此操作:

代码语言:javascript
复制
sed -i 's/}]}/}]},/g' file.txt
sed -i '1i [' file.txt
sed -i '$ s/}]},/}]}]/g' file.txt

我的问题是,如果这个文件存在于HDFS上的/test位置,该怎么办?

如果我使用:sed -i 's/}]}/}]},/g' /test/file.txt

它会查看unix分区/test,并说文件不存在。

如果我使用:sed -i 's/}]}/}]},/g' | hadoop fs -cat /test/file.txt

它显示- sed:没有输入文件,然后按照cat命令打印file.txt的内容。

如果我使用hadoop fs -cat /test/file.txt | sed -i 's/}]}/}]},/g'

显示- sed:无输入文件cat:无法写入输出流

那么,我该如何将HDFS文件中的字符串替换为其他字符串呢?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-03-16 15:45:30

使用sedhdfs命令:

代码语言:javascript
复制
hdfs dfs -cat /test/file.txt | sed 's/$/,/g; $s/,$/\n]/; 1i [' | hadoop fs -put -f - /test/file.txt

哪里,

hdfs dfs -cat /test/file.txt用于获取HDFS文件内容

s/$/,/g;用于在每行末尾添加逗号

$s/,$/\n]/;用于删除行中的逗号并添加带括号的新行

1i [用于在第一行添加括号

hadoop fs -put -f - /test/file.txt用于覆盖HDFS中的原始文件

票数 10
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/42816946

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档