GNU/Linux >> Linux の 問題 >  >> Linux

Linuxでデータファイルから最初の列(実際には行名)を削除するには?

慣用的なカットの使用は

になります
cut -f2- input > output

区切り文字がタブ ("\t") の場合。

または、単純に awk で マジック (スペースとタブ区切りの両方で機能します)

 awk '{$1=""}1' input | awk '{$1=$1}1' > output

最初の awk はフィールド 1 を削除しますが、区切り記号を残し、2 番目の awk は区切り記号を削除します。デフォルトの出力区切り文字はスペースです。タブに変更する場合は、-vOFS="\t" を追加します

更新しました

更新された入力に基づくと、問題はカットが複数の列として扱われる最初のスペースです。対処する 1 つの方法は、カットする前にまずそれらを取り除くことです

sed 's/^ *//' input | cut -d" " -f2- > output

または awk を使用します この場合も同様に機能する上記の代替方法。


cut を使用できます --complement のコマンド オプション:

cut -f1 -d" " --complement input.file > output.file

これにより、最初の列を除くすべての列が出力されます。


@Karafka CSVファイルがあったので、「、」セパレーターを追加しました(あなたのものに置き換えることができます

cut -d"," -f2- input.csv  > output.csv

次に、ループを使用して、ディレクトリ内のすべてのファイルを調べました

# files are in the directory tmp/
for f in tmp/*
do
    name=`basename $f`
    echo "processing file : $name"
    #kepp all column excep the first one of each csv file 

    cut -d"," -f2- $f > new/$name
    #files using the same names are stored in directory new/  
done

Linux
  1. シェルのコマンド出力から最初/最後の「n」行を削除するにはどうすればよいですか?

  2. Linux – Freeからの出力のBuffers列?

  3. Linux – LinuxでProcファイルシステムはどのくらいの頻度で更新されますか?

  1. sed を使用して Linux でテキスト ファイルの任意の行の最初の 5 文字を削除する

  2. ファイル B に表示される行を別のファイル A から削除するには?

  3. Linux コマンド出力の最初の行を省略する

  1. time コマンドの出力を Linux のファイルにリダイレクトする方法は?

  2. CからLinuxで現在のファイル(pwd)へのパスを取得する方法は?

  3. ファイルから (特定の行と列の) 値を抽出し、それを新しい変数に割り当てる方法