Radera första kolumnen i en text-tab-fil?

Tråden skapades och har fått 8 svar. Det senaste inlägget skrevs .
1
  • Medlem
  • International user
  • 2006-11-17 18:42

Jag har en fil som ser ut så här:

col 1-col 2-col 3-col 4
col 1-col 2-col 3-col 4
col 1-col 2-col 3-col 4
col 1-col 2-col 3-col 4

Där "-" representerar ett tab-tecken. Jag behöver radera första kolumnen (col 1) i varje rad inklusive tabben.
Det ska ske med ett shell-script (sh). Det som behövs finns säkert inom regex, sed, awk o.s.v.

OBS 1: Endast sh
OBS 2: Testa ditt inlägg i Terminal INNAN du postar.
OBS 3: Ditt inlägg behöver inte fungera till 100% (gärna 92%)

  • Medlem
  • Stockholm
  • 2006-11-17 18:55

Kommandot "cut" har tab som standardavgränsare. Således kan följande användas:

cat dinfil | cut -f2- > nyfil

"cut -f2-" betyder "Klipp ut allt från fält 2 till slutet av raden och anse att tab är fältavgränsare."

Hoppas det hjälper.

  • Medlem
  • International user
  • 2006-11-17 19:44

Först måste jag säga: Nice Dude, it works!
Sen undrar jag var i "man cut" kan man förstå att "cut -f2-" (med "-" efter 2:an) fungerar?

  • Medlem
  • International user
  • 2006-11-17 19:57

OK (lite luddigt men):

-f

....


The list option argument is a comma or whitespace separated set of
     increasing numbers and/or number ranges.  Number ranges consist of a num-
     ber, a dash (`-'), and a second number and select the fields or columns
     from the first number to the second, inclusive.  Numbers or number ranges
     may be preceded by a dash, which selects all fields or columns from 1 to
     the first number.  Numbers or number ranges may be followed by a dash,
     which selects all fields or columns from the last number to the end of
     the line.  Numbers and number ranges may be repeated, overlapping, and in
     any order.  It is not an error to select fields or columns not present in
     the input line.
  • Medlem
  • International user
  • 2006-11-17 19:59

Jag följer upp med frågan: Hur raderar jag den n:e columnen? T.ex. den 3:e kolumnen?

  • Medlem
  • Stockholm
  • 2006-11-17 20:54
Ursprungligen av Wire:

Jag följer upp med frågan: Hur raderar jag den n:e columnen? T.ex. den 3:e kolumnen?

$ cut -f1-2,4- dinfil > nyfil

Observera att cut inte behöver cat!

  • Medlem
  • International user
  • 2006-11-17 21:52

Men var är "n" i "formeln"? (n=rad n)

  • Medlem
  • Stockholm
  • 2006-11-18 10:03

n är den siffra som inte är med! (n = kolumn n)

I cut-kommandot anger du vilka kolumner du vill ha i en lista. Utelämna de kolumner du inte vill ha.

Är det så att ditt shellskript har n i en variabel?

if [ $N -le 1 ];
  then cut -f2- dinfil > nyfil;
  else cut -f1-`expr $N - 1`,`expr $N + 1`- dinfil > nyfil;
fi
  • Medlem
  • International user
  • 2006-11-23 08:50

Yeah! Tack för hjälpen pesc och macce. Nu rullar funktionen! Tack!

1
Bevaka tråden