HALLO,
wahrscheinlich ist das etwas sehr einfaches, aber ich verstehe den Punkt jetzt nicht. In Linux, Shell, eine Textdatei gegeben, wie kann ich so etwas tun, cat Dateiname, so dass ich nur die erste Zeile, die dritte Zeile, 5, 7, 9 und so weiter sehe?
wenn nicht mit cat, mit einem anderen befehl
Vielen Dank
{print}
ist die Standardaktion, reicht alsoawk 'NR % 2 == 0' < myfile
aus.2 == 0
mit2 == 1
für das Gegenteil.Oder so ähnlich
Erläuterungen finden Sie in der Manpage für
sed
.quelle
sed
Version, die mir durch den Kopf ging.sed -n '1d;p;n'
zum Beispiel problemlos Zeilen überspringen, die gerade sindVerwenden Sie sed:
quelle
sed
nicht die Standardeinstellung ist.sed
Handbuch gnu.org/software/sed/manual/html_node/Addresses.html#Addresses sagt "first ~ step This GNU extension ...". Es wird nicht erwähnt--posix
. Wenn ich es versuchegsed --posix -n 1~2p
(GNU sed 4.2.1), bekomme ichgsed: -e expression #1, char 2: unknown command: ‘~’
.quelle
2 Möglichkeiten, wie Sie es mit awk machen können
ODER nur mit der Muschel
quelle
Eine einfache Suche in Google zeigt diesen Link: http://bash.cyberciti.biz/academic/write-odd-even-line-file/
Sie müssen es nur ein wenig optimieren.
Meine 2 Cent.
quelle
Habe dies nicht getestet (scheint nicht unter Mac OS X zu funktionieren), aber GNU sed unterstützt dies
first~step
als Adressauswahl, zum Beispiel:sed -n 1~2p file
würde in der ersten Zeile beginnen und danach jede zweite Zeile drucken.
quelle
sed
in der Basisinstallation ein BSD .Konnte nicht getestet werden, fand einen Link: cat -n $ 1 | grep "$ ODDRE" | schneide -b 8-> oddfile. $$ aus
quelle
ODDRE
jetzt ansteht. Diese Antwort funktioniert jedoch nur, wenn die Datei weniger als eine Million Zeilen enthält.Sie können diese Befehle verwenden, um das Ergebnis anzufordern
awk 'NR% 2 == 1'
sed -ne '1 ~ 2p'
quelle
ls -l
hier?