如何仅在每行的最后一个单词上用另一个字符串替换字符串

时间:2016-02-01 11:18:30

标签: linux unix awk sed

我想取代联合国'在每行的最后一个单词中用' LK'。

输入文件:

Y'UN 310R 07MAR DAUNEN UN2    
Y'UN 720R 07MAR DENSUN HK2    
Y'UN 721R 14MAR UNDDEN HK2    
Y'UN1692R 14MAR DEUNAY UN2

需要输出:

Y'UN 310R 07MAR DAUNEN LK2    
Y'UN 720R 07MAR DENSUN HK2    
Y'UN 721R 14MAR UNDDEN HK2    
Y'UN1692R 14MAR DEUNAY LK2

2 个答案:

答案 0 :(得分:2)

使用awk

awk '{sub(/UN/, "LK", $NF)}1' File

在每行($NF)的最后一个字段中,将模式UN(/UN/)替换为字符串LK("LK")。同时打印未受影响的行(1)。

输出:

Y'UN 310R 07MAR DAUNEN LK2

Y'UN 720R 07MAR DENSUN HK2

Y'UN 721R 14MAR UNDDEN HK2

Y'UN1692R 14MAR DEUNAY LK2

答案 1 :(得分:1)

这里的关键是使用'行尾'锚 - $

sed -e 's/UN\([A-Z0-9]*\)$/LK\1/'