2017-03-15 9 views
5

UNIXファイルシステムにfile.txtがあります。その内容は以下の通りです:HDFSにあるファイルのテキストを別のテキストに置き換える方法

{abc}]} 
{pqr}]} 

私はにこのfile.txtを変換したい:私はシェルスクリプトの下に使用してこれを行うことができるよ

[ 
{abc}]}, 
{pqr}]} 
] 

sed -i 's/}]}/}]},/g' file.txt 
sed -i '1i [' file.txt 
sed -i '$ s/}]},/}]}]/g' file.txt 

私の質問はこのファイルが/ testの場所のHDFS上に存在するとどうなりますか?

私が使用している場合:sed -i 's/}]}/}]},/g' /test/file.txt

これは、UNIXのパーティション/テストを見て、ファイルが存在しないと言うでしょう。

私が使用している場合:何も入力ファイルを、その後、catコマンドあたりとしてはfile.txtの内容を印刷しますsed -i 's/}]}/}]},/g' | hadoop fs -cat /test/file.txt

それは-----がsedはないと言います。

私が使用している場合はhadoop fs -cat /test/file.txt | sed -i 's/}]}/}]},/g'

それはsedの----言う:私はいくつかとHDFSで私のファイルから文字列を置き換えるものとどのように

ので、出力ストリームに書き込むことができません、:入力が 猫をファイルしません他の文字列ですか?

答えて

5
sed

hdfsコマンド:

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は、各行の末尾にカンマを追加するための

s/$/,/g;があるHDFSファイルの内容を取得するためである

$s/,$/\n]/;は、行のコンマを削除して改行を追加するためのものですブラケットと

1i [は歓声をラインのこの作品は、私の時間の多くを保存し

+0

hadoop fs -put -f - /test/file.txtがHDFSに元のファイルを上書きするためにある最初の行にブラケットを追加するためのものです。.. – salmanbw

関連する問題