2012-11-19 57 views
3

可以使用grep/sed增加txt文件中的某些數字嗎?使用grep或sed更改值

我想找到文件中的所有數字,並將它們增加到5。這可能與grep和sed或我需要爲此編寫應用程序?

編輯: 文件有n行開頭的數字和數字,而不是一些文本。 喜歡電影的標題。

例如行:

34 - 36 : Some text. 
+0

你會想爲此使用sed或perl,而不是grep。你有什麼嘗試? – gpojd

+0

你能提供關於你的文件格式的更多細節嗎? –

+0

'grep'旨在選擇,而不是編輯數據。這是工作的錯誤工具。我毫不猶豫地說它不能在'sed'中完成,但是你需要某種擴展的正則表達式支持來完成這個添加。你可以用'awk'來完成。如果遇到問題,我可能會使用Perl; Python可能也會如此。 –

回答

1

大概awk的。將記錄分隔符更改爲空格(假定這是您想要執行的操作),然後如果記錄匹配正則表達式^[0-9]*$轉換爲數字添加5並打印,否則打印。

這是一個非常完整的解決方案,但「留作練習」進行編碼。

2

您可以使用Perl爲:

perl -i -pe 's/(\d+)/$1+5/eg' filename 

See it

1

我相信你應該使用awkChanging the Contents of a Field

>cat 1.txt 
34 - 36 : Some text. 


cat 1.txt | awk '{ $1=$1+5; $3=$3+5; print $0; }' 
39 - 41 : Some text. 
+0

如果這些字段始終是字段1和3,則工作正常。從問題中可以看出,文本文件格式嚴格。 –

+0

你說得對。無論如何,如果Steva改變他的問題,並說任何領域可以是一個數字,我會改變我的答案。 –

+0

+1的概念。可以用'+ ='操作符加緊一點,並且可以無用地使用cat。 –

0

這可能爲你工作(GNU sed的&擊):

sed 's/[0-9]\+/$((&+5))/g;s/.*/echo "&"/e' file