使用linux查找和替换

时间:2014-03-12 19:59:41

标签: regex linux sed awk

我正在尝试使用正则表达式传输文本以匹配:O后跟空格和随机数,然后是新行

示例:

fffffffffffffffffffffffffffffffO 11

ffffffffffffffffO 145

fffffffffffffffffffffffffO 257

fffffffffffO 47

fffffffffffffffffffO 1

ffffffffffffO 85

fffffffffffffffffffffffO 144

fffffffffffffffO 356

并且像这样:

fffffffffffffffffffffffffffffff

ffffffffffffffff

fffffffffffffffffffffffff

fffffffffff

fffffffffffffffffff

ffffffffffff

fffffffffffffffffffffff

fffffffffffffff

使用sed或awk ...

任何想法?

4 个答案:

答案 0 :(得分:3)

SED

sed -i 's/O [0-9]\+$//' file

答案 1 :(得分:2)

您可以使用:

awk -F "O" '{ $2=""; print $0}' file.txt

或Jotne的较短版本:

awk -F\O '{$2=""}1'

正如格伦杰克曼所说,你只能打印所需的部分:

awk -F "O" '{ print $1}' file.txt

但是,这些命令并不关心行中是否有另一个O,以及行尾是否有数字。

答案 2 :(得分:1)

现在就在sed中进行:

sed -i 's/O\ [0-9]\+//g' file.txt


编辑: 如果必须以" O [0-9] *"结束,则在正则表达式的末尾加上一个$,将其锚定到该行的末尾。

sed -i 's/O\ [0-9]\+$//g' file.txt

答案 3 :(得分:0)

Perl one liner会为你做什么吗?

perl -i.bak -p -e "s/(.*)O.*/$1/g" input.txt