2016-03-28 93 views
0

我有一個大的文件,其中每一行是形式如何替換某些形式的部分行?

b d 

b哪裏和d是數字的。我想形式

b -1 

的所有線路變更爲

b 1 

b其中爲任意數(即,它應該保持不變)。

對於一個具體的例子,該文件

0.2 0.5 
0.1 -1 
0 -1 
0.3 0.6 

應該成爲

0.2 0.5 
0.1 1 
0 1 
0.3 0.6 

有一種簡單的方式實現這一目標使用,也就是說,sed或類似工具?

編輯。從文件中刪除所有-就足夠了。感謝@Cyrus的觀察。這個問題現在已經解決了,但是,如何用這種更普遍的模式替換文件的一般問題仍然是開放的。答案仍然受歡迎。如果你想編輯文件

sed 's/ -1$/ 1/' old_file > new_file 

+1

是否要從文件中刪除所有'-'? – Cyrus

+1

好吧,現在你提到它了,是的,這個問題相當於從文件中刪除所有'-'的問題。很好的觀察。 :-)我沒有想到它,因爲'-1'的平均無窮大,這些文件是[分級模塊](https://en.wikipedia.org/wiki/Graded_ring#Graded_module)的表示。 – blazs

回答

2

試試這個:

tr -d '-' <old_file> new_file 

1更換所有-1列2:

awk '$2==-1 {$2=1} 1' old_file > new_file 

或GNU的sed與GNU sed「就位」使用sed的選項-i

sed -i 's/ -1$/ 1/' file