GNU/Linux >> LINUX-Kenntnisse >  >> Linux

So finden Sie unter Linux Zeilen, die eine Zeichenfolge enthalten

/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

Linux
  1. So verwenden Sie FIND unter Linux

  2. So finden Sie eine Datei in Linux

  3. So finden Sie bestimmten Text mit GREP unter Linux

  4. Wie finde ich unter Linux Dateien, die zwei Zeichenfolgen zusammen enthalten?

  5. Wie finde ich heraus, wie lange es her ist, dass ein Linux-System installiert wurde?

So finden Sie eine Zeichenfolge in einer Datei unter Linux

So finden Sie die IP-Adresse unter Linux

So finden Sie den Hostnamen unter Linux

So finden Sie Dateien, die eine bestimmte Textzeichenfolge in Linux enthalten

So finden Sie die längste(n) Zeile(n) in einer Datei in Linux

So verwenden Sie grep unter Linux