/tmp/meinedatei
first line text
wanted text
other text
der Befehl
$ grep -n "wanted text" /tmp/myfile | awk -F ":" '{print $1}'
2
Der -n
switch to grep stellt jeder übereinstimmenden Zeile die Zeilennummer voran (gefolgt von :
), während der zweite Befehl den Doppelpunkt als Spaltentrenner verwendet (-F ":"
) und gibt die erste Spalte einer beliebigen Zeile aus. Das Endergebnis ist die Liste der Zeilennummern mit einem Streichholz.
Neben grep
, können Sie auch andere Dienstprogramme wie awk
verwenden oder sed
Hier sind ein paar Beispiele. Angenommen, Sie möchten nach einer Zeichenfolge is
suchen in der Datei namens GPL
.
Ihre Beispieldatei
[email protected]:~$ cat -n GPL
1 The GNU General Public License is a free, copyleft license for
2 The licenses for most software and other practical works are designed
3 the GNU General Public License is intended to guarantee your freedom to
4 GNU General Public License for most of our software;
[email protected]:~$
1. grep
[email protected]:~$ grep is GPL
The GNU General Public License is a free, copyleft license for
the GNU General Public License is intended to guarantee your freedom to
[email protected]:~$
2. ach
[email protected]:~$ awk /is/ GPL
The GNU General Public License is a free, copyleft license for
the GNU General Public License is intended to guarantee your freedom to
[email protected]:~$
3. sed
[email protected]:~$ sed -n '/is/p' GPL
The GNU General Public License is a free, copyleft license for
the GNU General Public License is intended to guarantee your freedom to
[email protected]:~$
Hoffe das hilft
Die Befehlsfamilie grep (inkl. egrep, fgrep) ist die übliche Lösung dafür.
$ grep pattern filename
Wenn Sie nach Quellcode suchen, ist ack möglicherweise die bessere Wahl. Es durchsucht Unterverzeichnisse automatisch und vermeidet Dateien, die Sie normalerweise nicht durchsuchen würden (Objekte, SCM-Verzeichnisse usw.)
Der übliche Weg, dies zu tun, ist mit grep
, das ein Regex-Muster verwendet, um Zeilen abzugleichen:
grep 'pattern' file
Jede Zeile, die mit dem Muster übereinstimmt, wird ausgegeben. Wenn Sie nur nach festen Zeichenfolgen suchen möchten, verwenden Sie grep -F 'pattern' file
. fgrep
ist eine Abkürzung für grep -F
.
Sie können auch sed
verwenden :
sed -n '/pattern/p' file
Oder awk
:
awk '/pattern/' file