2014-07-02 5 views
11

Ho il seguente output in un file di testo:bash - come rimuovere prime 2 righe da uscita

106 pages in list 
.bookmarks 
20130516 - Daily Meeting Minutes 
20130517 - Daily Meeting Minutes 
20130520 - Daily Meeting Minutes 
20130521 - Daily Meeting Minutes 

sto cercando di rimuovere le prime 2 righe dalla mia uscita. Questo particolare script di shell che uso per eseguire, ha sempre quelle prime 2 righe.

Ecco come ho generato e leggere il file:

#Lists 
PGLIST="$STAGE/pglist.lst"; 
RUNSCRIPT="$STAGE/runPagesToMove.sh"; 

#Get List of pages 
$ATL_BASE/confluence.sh $CMD_PGLIST $CMD_SPACE "$1" > "$PGLIST"; 

# BUILD executeable script 
echo "#!/bin/bash" >> $RUNSCRIPT 2>&1 
IFS='' 
while read line 
    do 
    echo "$ATL_BASE/conflunce.sh $CMD_MVPAGE $CMD_SPACE "$1" --title \"$line\" --newSpace \"$2\" --parent \"$3\"" >> $RUNSCRIPT 2>&1 
done < $PGLIST 

Come faccio a rimuovere quei primi 2 linee?

+0

Queste righe sembrano come generate negli altri script. Prova a cercare le istruzioni 'echo' negli altri tuoi file come' runPagesToMove.sh' e 'confluence.sh'. Se pubblichi quei file, qualcuno potrebbe essere in grado di risolvere il problema, ma il problema non è realmente risolvibile dal codice fornito. – Adam

risposta

14

La risposta classica userebbero sed per eliminare le linee 1 e 2: modo

sed 1,2d "$PGLIST" 
+0

ho avuto questo lavoro la scorsa notte - './runscript.sh>" $ PGLIST "| sed 1,2d $ PGLIST' ma per qualche motivo, non funziona ora. Quindi, ho provato anche in questo modo, ma senza fortuna. './runscript.sh>" $ PGLIST "| sed 1,2d $ PGLIST> $ PGLIST; ' – noober

+0

Non hai avuto quello che mostri 'funzionante' ieri sera. La scorsa notte, hai omesso il '>' o avevi un punto e virgola (o newline) al posto di '|'. Fai attenzione a cercare di leggere e scrivere un singolo file in una pipeline; di solito finisci con il clobbering del file prima che venga letto, il che porta all'esasperazione. Nel complesso, penso che quello che stai cercando sia './runscript.sh | sed 1,2d> "$ PGLIST" ', ma non posso esserne certo. –

14

È possibile raggiungere questo obiettivo con tail:

tail -n +3 "$PGLIST" 
-n, --lines=K 
      output the last K lines, instead of the last 10; or use -n +K 
      to output starting with the Kth 
+0

Wow, funziona anche su macOS! macOs non fa menzione di questo nella sua pagina 'man'. – Patrick

5

awk:

awk 'NR>2' "$PGLIST"