需要复制机器模式中的最后一个单词
hi abd 123
hiabd 2 44
hi 12 233
输出应为:
hi abd 123 123 123
hiabd 2 44 44 44
这是我试过的:
sed '/abd/!d' F1
但它并没有重复最后一个字。 我知道我可以用回溯做一些事情,但是它被误解了,请帮助我只能使用sed命令。
答案 0 :(得分:1)
如果您需要awk
解决方案,以下内容也可以帮助您。
awk '/abd/{print $0,$NF,$NF}' Input_file
输出如下。
hi abd 123 123 123
hiabd 2 44 44 44
答案 1 :(得分:0)
使用GNU sed:
sed -n '/abd/ {s/\( [^ ]\+\)$/&\1\1/p}' file
或
sed -nE '/abd/{ s/( [^ ]+)$/&\1\1/p}' file
输出:
hi abd 123 123 123 hiabd 2 44 44 44
答案 2 :(得分:0)
对于多样性,仅使用bash
:
while IFS= read -r line; do
[[ $line =~ abd ]] && echo "$line ${line##* } ${line##* }"
done < file
您可以选择其他character set作为单词分隔符,例如:
#space and tab are delimiters
${line##*[[:blank:]]}
#character 'a' and 'c' are delimiters
${line##*[ac]}
此外,您甚至不需要二元运算符=~
。 [[ $line = *abd* ]]
就足够了。请注意,使用bash
的速度明显慢于awk
和sed
解决方案。