【问题标题】:How to replace parts of lines of certain form?如何替换某些形式的线的一部分?
【发布时间】:2016-07-15 17:56:16
【问题描述】:

我有一个大文件,其中每一行的格式为

b d

其中bd 是数字。我想更改表格的所有行

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 的观察。这个特殊的问题现在已经解决了,但是,如何用更一般的模式以这种方式替换文件的一般问题仍然悬而未决。仍然欢迎回答。

【问题讨论】:

  • 是否要从文件中删除所有-
  • 好吧,既然您提到了它,是的,问题等同于从文件中删除所有- 的问题。很好的观察。 :-) 我没有想到,因为-1 的平均无穷大而这些文件是graded module 的表示。

标签: linux unix text replace sed


【解决方案1】:

试试这个:

tr -d '-' < old_file > new_file

或将第 2 列中的所有 -1 替换为 1

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

或使用 GNU sed:

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

如果您想使用 GNU sed “就地”编辑您的文件,请使用 sed 的选项 -i

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

【讨论】:

    猜你喜欢
    • 2011-12-31
    • 1970-01-01
    • 2020-01-27
    • 2018-07-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-12-20
    相关资源
    最近更新 更多