-1

次の形式の csv にデータがあります。

  1    number     tab    one
  2    number two
  3    number three

次に、データを次の形式に変換します。

  1    number tab one
  2    number two
  3    number three

つまり、最初のタブはそのままにしておきたいのですが、2 つ目以降のタブはスペースに置き換えます。Linux コマンド (sed など) を使用してこれを行うことは可能ですか。置換に sed を使用できることはわかっていますが、最初のタブ スペースをスキップして 2 番目のタブ スペースから置換を開始することは可能ですか。

4

4 に答える 4

3

これはうまくいくかもしれません(GNU sed):

sed 's/\t/ /2g' file
于 2013-10-20T08:25:01.083 に答える
1

最初のタブをスキップするのは簡単ではありません。

しかし、次のように問題を再構成できます。

  1. すべてのタブをスペースに置き換えます
  2. 最初のスペースをタブに置き換えます

これは少し損失が多いかもしれませんが、実際には無視でき、結果は同じです:

sed -e 's/    / /g; s/ /      /' < yourfile.txt

コマンド ラインで TAB 文字を入力するには、Ctrl-V TAB.

sedセミコロンが 2 つのコマンドを区切るのに機能しない古い実装では、-e代わりに 2 つの式を使用できます。

sed -e 's/    / /g' -e 's/ /      /' < yourfile.txt
于 2013-10-20T08:16:13.317 に答える
1
cat file
1   number     tab    one
2   number two
3   number three

これを試して:

sed 's/\s\+/ /2g' file
1   number tab one
2   number two
3   number three
于 2013-10-20T09:13:16.823 に答える