2016-03-28 199 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