我正在更改文本中某一行的最后一个字。
这个词可以在其他行中重复。
我能用什么命令来做这个?
# 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”汽车1964 1号
18655“卢卡斯·特塞罗”汽车2 1987 2
18656“Fernando Emperador”3 1845 5号
18657“胡安·费尔南多”汽车3 1965 1
这将是最后的状态
18654“JuanFrances”汽车1964 1号
18655“卢卡斯·特塞罗”汽车2 1987 2
18656“Fernando Emperador”3 1845 5号
18657年“胡安·费尔南多”汽车3 1965年1月
这是唯一的办法
sed'“$line”s/no/si/'libros.bd>temp&mv temp libros.bd
最佳答案
要获得最后一个单词,您可以使用grep
grep -Eo '[^ ]+$'
所以在你的情况下:
word=$(echo $line| grep -Eo '[^ ]+$')
grep
搜索模式,如您所知,-E
是--extended-regexp
或更高级的正则表达式匹配。-o
输出匹配的行以不给它们上色。正则表达式部分:
[^ ]
匹配空间+
匹配上一次或多次$
匹配行尾以下是基于您的输入的输出:
no
si
no
si
state
no
si
no
no
关于bash - 如何更改文本中特定行的单词?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/55559112/