我正在更改文本中特定行的最后一个单词。 这个词可以在其他行中重复。
我可以为此使用什么命令?
# file libros.bd
while IFS = read line
do
word=$(echo $line|rev|cut -f1 -d' '|rev) #Last word in each line
done <"$file"
这是我的输入文件:
18654“ JuanFrances” autor1 1964 1 no
18655“卢卡斯·特塞罗” autor2 1987 2 si
18656“费南多·皇帝” autor3 1845 5否
18657“胡安·费尔南多” autor3 1965 1 si
这将是最终状态
18654“ JuanFrances” autor1 1964 1 no
18655“卢卡斯·特塞罗” autor2 1987 2 si
18656“费南多·皇帝” autor3 1845 5否
18657“胡安·费尔南多” autor3 1965 1 否
这将是一种方式
sed”“ $ line”'s / no / si /'libros.bd> temp && mv temp libros.bd
答案 0 :(得分:1)
要获取最后的消息,您可以使用grep
grep -Eo '[^ ]+$'
所以在您的情况下:
word=$(echo $line| grep -Eo '[^ ]+$')
grep
搜索模式,-E
是--extended-regexp
或更高级的正则表达式数学。 -o
输出匹配的行,不给它们上色。
正则表达式部分:
[^ ]
匹配空格
+
匹配先前一次或多次
$
与行尾匹配
这是根据您输入的输出:
no
si
no
si
state
no
si
no
no