可以使用grep/sed增加txt文件中的某些數字嗎?使用grep或sed更改值
我想找到文件中的所有數字,並將它們增加到5。這可能與grep和sed或我需要爲此編寫應用程序?
編輯: 文件有n行開頭的數字和數字,而不是一些文本。 喜歡電影的標題。
例如行:
34 - 36 : Some text.
可以使用grep/sed增加txt文件中的某些數字嗎?使用grep或sed更改值
我想找到文件中的所有數字,並將它們增加到5。這可能與grep和sed或我需要爲此編寫應用程序?
編輯: 文件有n行開頭的數字和數字,而不是一些文本。 喜歡電影的標題。
例如行:
34 - 36 : Some text.
大概awk的。將記錄分隔符更改爲空格(假定這是您想要執行的操作),然後如果記錄匹配正則表達式^[0-9]*$
轉換爲數字添加5並打印,否則打印。
這是一個非常完整的解決方案,但「留作練習」進行編碼。
我相信你應該使用awk
Changing 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.
如果這些字段始終是字段1和3,則工作正常。從問題中可以看出,文本文件格式嚴格。 –
你說得對。無論如何,如果Steva改變他的問題,並說任何領域可以是一個數字,我會改變我的答案。 –
+1的概念。可以用'+ ='操作符加緊一點,並且可以無用地使用cat。 –
這可能爲你工作(GNU sed的&擊):
sed 's/[0-9]\+/$((&+5))/g;s/.*/echo "&"/e' file
你會想爲此使用sed或perl,而不是grep。你有什麼嘗試? – gpojd
你能提供關於你的文件格式的更多細節嗎? –
'grep'旨在選擇,而不是編輯數據。這是工作的錯誤工具。我毫不猶豫地說它不能在'sed'中完成,但是你需要某種擴展的正則表達式支持來完成這個添加。你可以用'awk'來完成。如果遇到問題,我可能會使用Perl; Python可能也會如此。 –