テキストファイルがあります。
number 1_1 \t number1_2 \t etc
number 2_1 \t number2_2 \t etc
このファイルの最初の列(number1_1、number2_1などに対応、つまり各行の最初のタブの前の数字)を削除したい。 この投稿 を読んで、最初の列を削除する解決策を提案します(Peterの答えを参照)。ただし、数字のサイズが異なるため、機能しません。最初の列を削除する操作を繰り返すことはできません。どうすればできますか?
これにより、任意の行の最初のタブを含むすべての文字が削除されます。
:%s/^[^\t]*\t//
コマンドラインcut
:
cut -f 2- {filename.txt} > {filenamenew.txt}
デフォルトをタブにカットします。スペースのような何かが必要な場合は、-d " "
を追加します。 -f
は、コピーするフィールドです。 2-は、列2のすべて(および列2を含む)を意味します。
awk
を通じて、
awk -F"\t" '{print FS,$2}' file > newfile
最初の列を切り取り、残りのタブと2番目の列のみを印刷します。
sed
を通じて、
sed -r 's/^([^\t]*)\t(.*)$/\t\2/g' file > newfile
Viで(スペースで区切られた)最初の列を削除するには、次のようにします。
:%norm dW
で区切られた列の Tab、それは:
:%norm df
Ctrl+VTab
したがって、ファイルから最初の列を削除するコマンド(インプレース)は次のようになります。
ex +"%norm df$(echo -e '\t')" -scwq file
保存(ドライラン)の前に出力を確認するには、-scwq
を-sc'%p|q!'
に置き換えます。
または クリスの提案 に基づいて、次のようになります:
ex -c':exe ":%norm df\<Tab>"' -sc'%p|q!' <(echo -e "a a\tb b\tc c")
または、視覚モードで実行します(左上から開始する場合):
2番目の列の前に残っているスペースを削除するには、以下をお勧めします。
:%norm df
Ctrl+VTabx