我有一个这样的文件:
Once upon a time there lived a cat.
The cat lived in the forest.
The forest had many trees.
我需要用“@”替换每行的最后一个空格,例如:
Once upon a time there lived a@cat.
The cat lived in the@forest.
The forest had many@trees.
我尝试sed 's/ .*$/@/g' file.txt
,但.*
匹配所有内容,并删除了那里找到的所有文字。
如何用“@”替换每行的最后一个空格?
答案 0 :(得分:3)
试试这个:
sed 's/\(.*\) /\1@/'
答案 1 :(得分:2)
匹配最后一个空格的正则表达式是(?=\S+$)
,不知道如何将sed切换到PCRE模式(以支持前瞻):
perl -ple "s/ (?=\S+$)/@/" file.txt
答案 2 :(得分:1)
我通常使用Perl:
perl -ple 's/ ([^ ]+)$/@\1/' file.txt
答案 3 :(得分:1)
尝试
s/\s([^\s]*)$/@\1/g
祝你好运,
鲍勃
编辑: 大声笑,测试它,似乎做你想要的:))
my $s = "the quick brown fox jumped";
$s =~ s/\s([^\s]*)$/@\1/g;
print $s;
# prints the quick brown fox@jumped