2014-07-02 24 views
11

ilk 2 satırları kaldırmak için nasıl bir metin dosyasına aşağıdaki çıkışı vardır:bash - çıkış

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

benim çıkışından ilk 2 satırları kaldırmak için arıyorum. Çalıştırmak için kullandığım bu özel kabuk betiği her zaman ilk 2 satıra sahiptir. O üst 2 satırları nasıl kaldırırım

#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 

:

Bu benim oluşturulan ve dosyayı okumak nasıl?

+0

Bu satırlar, diğer komut dosyalarınızda oluşturulmuş gibi görünüyor. "RunPagesToMove.sh" ve "confluence.sh" gibi diğer dosyalarınızda echo ifadelerini aramayı deneyin. Bu dosyaları gönderirseniz, bir kişi sorunu çözebilir, ancak sorun verilen koddan gerçekten çözümlenemez. – Adam

cevap

14

klasik cevap hatları 1 ve 2 silmek için sed kullanacağı

awk 'NR>2' "$PGLIST" 
+0

Dün gece bu çalışmayı yaptım - './runscript.sh>" $ PGLIST "| sed 1,2d $ PGLIST 'ama bazı nedenlerle, şimdi çalışmıyor. Ben de öyle denedim, ama şans yok. './runscript.sh>" $ PGLIST "| sed 1,2d $ PGLIST> $ PGLIST; ' – noober

+0

Dün gece 'çalışmayı' gösterdiğiniz şeye sahip değildiniz. Dün gece, ya '>' kelimesini atladınız ya da '|' yerine yarı-kolon (ya da yeni satır) yaptınız. Bir boru hattında tek bir dosyayı okumaya ve yazmaya çalışmaktan çekinmeyin; genellikle okumadan önce dosyayı clobbering ile sonuçlanırsınız, bu da öfkeye neden olur. Genel olarak, aradığınızı düşünüyorum './runscript.sh | sed 1,2d> "$ PGLIST", ama emin olamıyorum. –

14

Sen tail ile bunu başarabilirsiniz:

sed 1,2d "$PGLIST" 
+0

Vay, hatta MacOS'ta çalışıyor! macOs, bu "man" sayfasında bundan bahsetmez. – Patrick

5

awk yolu:

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