- 论坛徽章:
- 0
|
cat tmp.txt
==============
1234 1234
1234
1234
1234
==============
希望只替换第一个出现的 1234为abc, 其它的都不替换
方法一:sed
sed '/1234/{s/1234/abc/;:skip n;b skip;}' tmp.txt
方法二:awk
awk 'ok ==0 && /1234/{ sub(/1234/,"abc");print; ok = 1; next; } (ok == 1){print}' tmp.txt
以上命令是在一同一行中。
方法三: perl
perl -e 'undef $/;my $a=;$a=~s/1234/abc/s;print $a;' tmp.txt
方法四: bash
bash要版本3以上才支持regex(7)的正则表达式, 但对这个简单的例子也足够了。不知道的复杂的正则表达式能否支持:
ok=0;
while read -r l;
do
if [[ "$l" =~ "1234" && $ok == 0 ]] ;then
l="${l/1234/abc}";ok=1;
fi;
echo "$l";
done
方法五: vim
let g:first = 0
function! Tmp(src, dest)
if g:first == 0
let g:first=1
return a:dest
endif
return a:src
endfunction
%s#1234#\=Tmp(submatch(0), 'abc')#g
本文来自ChinaUnix博客,如果查看原文请点:http://blog.chinaunix.net/u/8681/showart_1120719.html |
|