2017-08-10 31 views
-1

我想,如果列有字母,數字,字母(ABC45648DE)開始我想,如果列有字母,數字,字母(ABC45648DE)開始

我的輸入檢查來檢查:

ABC45648DEF |GHJKK |23132331331| 
ABC  DEF |GHJKK |23132331331| 
ABCGHHJJDEF |GHJKK |23132331331| 
ABC89043DEF |GHJKK |23132331331| 

輸出應該是:

ABC45648DEF |GHJKK |23132331331| 
ABC89043DEF |GHJKK |23132331331| 

我試圖用this 「」」 awk -F'|' '($ 1!〜/ [A-Z0-9a-z] /)'WHTFile.txt> QC2Valid.txt「」「它不起作用。

您的幫助將不勝感激。

+0

爲什麼你用3對dbl引號括住你的'awk'代碼?在每行代碼/數據/錯誤信息的前面使用4個空格,或者突出顯示一段文本,並使用編輯框左上方的格式工具將其格式化爲代碼/數據/輸出。祝你好運。 – shellter

+0

並請包括您當前的示例輸出。否則,您會要求* N *讀者創建您的測試文件並運行代碼,只是爲了瞭解您的「不工作」是什麼意思。祝你好運。 – shellter

+0

AND'[A-Z0-9a-z]'表示'$ 1'中的任何單個字符是否匹配該模式,則測試通過。我不認爲這就是你的意思,並且考慮到你的'$ 1'值有尾隨空格,這會使編寫正則表達式來驗證你的數據變得複雜(或者是'|'char?之前的一個製表符char)。祝你好運。 – shellter

回答

0

AWK解決方案:

awk -F'[[:space:]]*\\|' '$1~/^ABC[0-9]+DEF/' WHTFile.txt 

輸出:

ABC45648DEF |GHJKK |23132331331| 
ABC89043DEF |GHJKK |23132331331| 
+0

感謝您的解決方案夥伴。 它應該從ABC開始並結束DEF - > ABC###### DEF。你能幫我在這裏嗎? – kris

+0

@kris,是的,看我的更新 – RomanPerekhrest

+0

謝謝哥們@ RomanPerekhrest – kris

0

此解決方案:

awk '/^ABC[0-9]{5}DEF /' WHTFile.txt > QC2Valid.txt 

它匹配 「ABCxxxxxDEF」 在每行的開始,其中「x」是一個數字。

如果需要任何數量的數字(和至少1),這是該腳本:

awk '/^ABC[0-9]+DEF /' WHTFile.txt > QC2Valid.txt 

加號在實施例1個或多個數字相匹配。

如果數字是ABC和DEF之間可選,試試這個另一種:

awk '/^ABC[0-9]*DEF /' WHTFile.txt > QC2Valid.txt 

星號在這種情況下,零個或多個數字相匹配。

+0

是的,它的工作。非常感謝你,但是它們之間的數字可能不是5,也可能小於或多於這個數字。如果將其更改爲:awk'$ 1〜/^ABC [0-9] + DEF $/$ ABC $ [0-9] {5} DEF /'WHTFile.txt> QC2Valid.txt – kris

+0

如果將其更改爲:awk' '文件 –

+0

@kris我編輯了我的答案,以實現任意數量的數字(至少匹配1個數字)。 – valrog