ベクトルからタブを取得する

ベクトルからタブを取得する

ファイルの最初の行が次のようになっている場合

NAMES           n1  n2  n3

row1とt1の間には2つのタブがありますが、タブは1つだけであるべきです...行は大きなファイルにあり、常に最初の行にあります。ROW1とその後の最初のエントリの間のタブを削除するにはどうすればよいですか?

NAMES   n1  n2  n3

答え1

使用方法perl:

perl -pe 's/^(\w*)\t\t/$1\t/' <your_input_file>

-iインライン置換のスイッチを追加する

perl -i -pe 's/^(\w*)\t\t/$1\t/' <your_input_file>

\t\t1列目と2列目の間だけでなく、すべてを置換するには、

perl -i -pe 's/\t\t/\t/' foo

\tまたは、 1より大きい数ですべてを置き換える

perl -i -pe 's/\t{2,}/\t/g' foo

$ printf "%s\t\t%s %s\n" "foo" "bar" "foobar" > foo
$ perl -i -pe 's/^(\w*)\t\t/$1\t/' foo
$ cat foo
foo     bar foobar    

またはあなたの例:

$ printf "%s\t\t%s %s %s\n" "ROW1" "t1" "t2" "t3" > foo
$ perl -i -pe 's/^(\w*)\t\t/$1\t/' foo
$ cat foo
ROW1    t1 t2 t3

関連情報