2014-01-16 55 views
-2

我可以得到一個不匹配的行不使用awksed如何在不使用awk或sed的情況下獲得不匹配的行?

我不使用awksed,因爲我使用的文本文件沒有列和它們的排列變化的常數。例如,我有一個名爲error1.txt這個文本文件,其中包含這樣的很多線路:

>304 00000800020030000000000032000AC00000000032000AC00000000000000000000000000000000022000000000 00000 \Device\Termdd  en-US  Classic           Error Description 1.    System MAN-RW-ADC1.PH.NIIT.com  50   
>50 49162 49162 18256 18256     0x80000000000000  2 2     TermDD  0  11/10/2013 11:47 

如果我想要得到的線:

Error Description 1 
11/10/2013 
11:47 

我現在所擁有的唯一的一點是:

`egrep '(Error.*Description.*1)' /home/xxxxxx/Documents/error1.txt` 

我應該使用什麼命令反轉場比賽沒有sedawk

+0

你想只匹配模式的行?你只想得到不符合該模式的線?還有別的嗎? –

+0

我想要的行'錯誤說明1 11/10/2013 11:47' – endlesslearning

+0

這不是自己的行。這是一條線的一部分。你想讓它的整個線路上的內容? –

回答

0

grep -o會給你一個結果字符串的一部分,所以

cat<<EOF | 
304 00000800020030000000000032000AC00000000032000AC00000000000000000000000000000000022000000000 00000 \Device\Termdd en-US Classic Error Description 1. System MAN-RW-ADC1.PH.NIIT.com 50 >50 49162 49162 18256 18256 0x80000000000000 2 2 TermDD 0 11/10/2013 11:47 
EOF 
grep -o 'Error Description [0-9]*' 

將產生Error Description 1。問題在於,它不會在同一行上獲取時間戳,也沒有獲取所有剩餘的垃圾。如果要將結果存儲在兩行(一次爲Error Description,一次爲時間戳),則可以將每行保存到一個變量中,並將其保存爲grep

否則,sedawk會給出最簡潔的結果,因爲它可以讓您使用位置替換。

有沒有特別的原因,你不能使用這兩個?

+0

我不能使用awk或sed,因爲我打算使用的文本文件沒有相同數量的列並且沒有固定模式。 – endlesslearning

+1

sed不需要列,你可以做一些像sed's /.* \(錯誤描述[0-9] * \)。* [0-9] {1,2} \/[0-9] { 1,2} \/[0-9] {2,4} \ [0-9] {1,2}:[0-9] {1,2} $/\ 1 \ \ 2 /'(非常未經測試,假設所有上述內容都是單行的。) – stellarhopper

2

使用sed的

sed -r 's/.*(Error Description [0-9]*).*([0-9]{2}\/[0-9]{2}\/[0-9]{4}\ [0-9]{2}:[0-9]{2})$/\1 \2/' error1.txt 

Error Description 1 11/10/2013 11:47 

的grep與-P

grep -iPo "Error.*Description.*1.*\K[0-9]{2}/[0-9]{2}/[0-9]{4} [0-9]{2}:[0-9]{2}$" error1.txt 

11/10/2013 11:47 
0

這裏是一種與正則表達式來做到這一點:

$ re="(Error Description [[:digit:]]*).*([[:digit:]]{2}/[[:digit:]]{2}/[[:digit:]]{4}[[:space:]]*[[:digit:]]{2}:[[:digit:]]{2})" 
$ while IFS='' read -r ln; do [[ $ln =~ $re ]] && echo "${BASH_REMATCH[@]:1:2}"; done < error1.txt 
Error Description 1 11/10/2013 11:47 
$ 
相關問題