2012-10-10 135 views
3

我正在查找一個linux命令,該命令在文本文件中搜索字符串 ,並在文件的每次出現時突出顯示(顏色),而不發出文本行(如grep) 。在Linux命令行中查找並突出顯示文本

+0

你的意思是像一個編輯器裏面? – golimar

+0

目前尚不清楚你想要什麼。簡單的文本文件沒有顏色,沒有辦法突出顯示它們,除非它是爲特定的編輯器或改變其格式(如將它們轉換爲HTML文件或類似的東西)。 – madth3

回答

0

我想你的意思是「不遺漏文本行」(而不是發射)...

我不知道有這樣的命令,但你可以使用腳本,如本(這個人是一個簡單的解決方案這需要的文件名(沒有空格)作爲第一個參數和搜索字符串(也沒有空格)作爲第二):

#!/usr/bin/env bash 
ifs_store=$IFS; 
IFS=$'\n'; 
for line in $(cat $1); 
    do if [ $(echo $line | grep -c $2) -eq 0 ]; then 
     echo $line; 
    else 
     echo $line | grep --color=always $2; 
    fi 
done 
IFS=$ifs_store 

另存爲,例如colorcat.sh,設置權限適當地(以能夠執行它)並將其稱爲

colorcat.sh filename searchstring 
5

我寫了這個方便的小腳本。這也許可以擴展到處理ARGS更好

#!/bin/bash 
if [ "$1" == "" ]; then 
    echo "Usage: hl PATTERN [FILE]..." 
elif [ "$2" == "" ]; then 
    grep -E --color "$1|$" /dev/stdin 
else 
    grep -E --color "$1|$" $2 
fi 

它像突出用戶正在運行的進程的東西有用:

ps -ef | hl "alice|bob" 
+0

+1爲優雅 – RonK

+0

我會upvote你兩次,如果我可以:D – Bamboomy

0

我最近有這樣的要求,設計了一個簡單的小程序做的正是這。 Link

用法:./highlight test.txt '^foo' 'bar$'

注意,這是很粗糙,但可以做成一些拋光的通用工具。

1

嘗試

tail -f yourfile.log | egrep --color 'DEBUG|' 

其中DEBUG是要突出顯示的文本。