替换sed中的单个字符

时间:2015-02-06 03:21:23

标签: sed text-processing

我目前有一个成绩列表,我试图将所有成绩改为A,我不知道如何使用sed只改变成绩,因为它不断改变第一个字符和类似的东西那。我试过sed /s/.$/A/'但这只会在字符串的末尾添加一个A. 列表:

> Steve maths A
>     Steve english C
>     Steve physics E
>     Jane maths A
>     Jane English B
>     Jane physics F
> 

由于

3 个答案:

答案 0 :(得分:1)

您可以尝试以下方法。我使用了[A-Z]$,因此无法将最后一行中的>符号更改为A。认为成绩后可能会有一些空格。在这种情况下,您可以使用sed 's/[A-Z] *$/A/' file

$ sed 's/[A-Z]$/A/' file
> Steve maths A
>     Steve english A
>     Steve physics A
>     Jane maths A
>     Jane English A
>     Jane physics A
>

答案 1 :(得分:0)

它不是sed但是awk可能会这样做,它会用A替换最后一个字段

awk '{$NF="A"}1' file
> Steve maths A
> Steve english A
> Steve physics A
> Jane maths A
> Jane English A
> Jane physics A

答案 2 :(得分:0)

您可能需要首先在您的文件上运行dos2unix或类似文件,但随后:

$ sed 's/[[:upper:]][[:space:]]*$/A/' file
> Steve maths A
>     Steve english A
>     Steve physics A
>     Jane maths A
>     Jane English A
>     Jane physics A
>

会奏效。