2013-03-08 28 views
0

我想從文本文件中提取包含確切字符數的行。我嘗試了colrm,但它沒有達到我想要的結果並排除了非字母數字符號。任何人都可以使用sed來做到這一點?我是新來的sed,但我仍然在閱讀......感謝您的任何建議。精確數量的字符串提取行

+0

是否有語言偏好? – aqua 2013-03-08 04:19:09

回答

0

grep '^.{25}$'只會返回只有25個字符的行,我想。

說明:

^  Start at beginning of string 
.{25} match exactly 25 of any character 
$  Up to the end of the string` 
+0

這在grep中更容易,然後sed。對於內聯編輯,Sed更好,當你只想出匹配的行時,grep更容易使用。 – 2013-03-08 04:30:21

+0

@EricG我懷疑你的評論正在寫,就像我在編輯答案一樣,因爲我在點擊「提交」後發現了同樣的問題。我們的想法越過了網絡空間......但是錯過了逃脫的大括號。 – Floris 2013-03-08 12:55:33

1

下面是測試文件,對,我叫文件 「測試」 運行此:

1 
11 
123 
1234 
12345 
55555 
123456 
666666 

的grep

要使用5個字符只打印線請使用以下內容

cat test | grep '^.\{5\}$' 

結果:

12345 
55555 

你需要逃跑的大括號的命令行,

sed的

cat test | sed '/^.\{5\}$/!d' 

在sed中採用相同的正則表達式如上,但/!d告訴sed不要刪除與此匹配的行。結果將與上述兩行相同。

AWK

大括號可以在AWK的一些版本引起的問題,並且可能需要所不具備的標誌。這裏有一個用awk做的基本方法

cat test | awk '{ if (length($0) == 5) print $0}' 
+0

ahhhh ...擊中了現場...感謝Eric ...即使包含了一些符號和特殊字符,但仍然在閱讀教程中如何排除這些符號和特殊字符,它仍然有效..再次感謝 – user2147008 2013-03-08 04:46:26

+0

什麼字符你想排除?你可以使用一個特殊的字母類而不是'''修飾,也許像'[a-zA-Z0-9]''。如果您使用一些示例行編輯您的問題,並且應該排除該行,我們可以提供幫助。這聽起來像你的源文件可能有控制字符。 – 2013-03-08 05:00:49

+0

哦,對不起。無論如何,我已經找到並管理搜索我想要的任務.. sed's/^> //'輸入文件,但您的建議,以取代。與[a-zA-Z0-9]相比更容易理解...... – user2147008 2013-03-08 05:55:23