Come gatto due file uno dopo l’altro, ma si omette l’ultima/prima linea, rispettivamente?

Ho due file che mi vuole gatto insieme. Tuttavia, l’ultima riga del primo file e la prima riga del file deve essere omesso.

Sono sicuro che questo può essere fatto in una shell UNIX (o meglio, Cygwin). Ma come?

  • Abbiamo davvero bisogno di una scriptingOverflow sito….
  • alcuni di noi credono che la creazione di script è molto di programmazione, come la compilazione 🙂
InformationsquelleAutor bastibe | 2010-08-30

 

7 Replies
  1. 3

    è possibile utilizzare:

    head -n -1 file1 && tail -n +2 file2

    testa mostra le prime righe di un file, il param -n mostra le prime n righe del file, ma se devi mettere prima il numero, mostra tutti i file tranne le ultime n righe.

    coda è analogico..

    per un migliore riferimento:

    uomo head

    uomo tail

    • coda +1 include la prima linea. dovrebbe essere di +2.
    • sì, l’ho inviato e poi testato 😛
    • stranamente, tail -n -1 ha lo stesso effetto tail -n +2
  2. 2
    head -n -1 file1

    stampa tutte le linee in file1 tranne l’ultima riga.

    tail -n +2 file2

    stampa tutte le linee in file2 tranne la prima riga.

    Combinare le due cose come:

    head -n -1 file1 ; tail -n +2 file2
  3. 2
    awk 'FNR>2{print p}{p=$0}' file1 file2

    Spiegazione come richiesto:

    FNR è l’attuale numero di record del file corrente in fase di elaborazione.
    All’inizio di ogni iterazione, la linea è memorizzato in “p” variabile, ma non è stampato, di sicurezza. Come il numero di record raggiunge il 3, la variabile “p” viene stampato, che contiene il record di 2. Questo significa che la 2 ° linea. Come awk raggiunge la fine del file, l’ultima riga non viene stampato e poi si passa al file successivo.

    • ghostdog74 ci illumini su cosa sta succedendo qui 🙂
    • Non rimuovere la prima e l’ultima riga da sia file? La domanda era per l’ultima riga del primo file e la prima riga del secondo file, non è vero?
  4. 1

    La seguente trascrizione mostra come ottenere questo:

    pax> cat file1.txt
    1.1
    1.2
    1.3
    1.4
    1.5
    
    pax> cat file2.txt
    2.1
    2.2
    2.3
    2.4
    2.5
    
    pax> head --lines=-1 file1.txt ; tail --lines=+2 file2.txt
    1.1
    1.2
    1.3
    1.4
    2.2
    2.3
    2.4
    2.5

    Dare il head comando negativo conte va fino a che lontano dalla fine. Allo stesso modo, un conteggio di partenza con + cause tail per avviare questa linea piuttosto che di un certo numero di righe dalla fine.

  5. 1

    Io non sono in grado di utilizzare il seguente comando sul mio Mac (più precisamente, in una shell bash in esecuzione in una finestra di Terminale su Mac OS X 10.7.5):

    head -n -1 file1

    Il comando di cui sopra genera il seguente messaggio di errore:

    head: illegal line count -- -1

    Appare valori negativi per il parametro-n non sono accettati nella versione Mac OS X di testa. Tuttavia, è possibile utilizzare sed invece:

    sed -e '$d' file1

    [“tail-n +2 file2” sembra funzionare come descritto in precedenza su Mac OS X]

Lascia un commento