Portál AbcLinuxu, 7. května 2025 12:39
[babjak][~/tmp/sed][21:06:27] cat file.txt abcd efgh i123 456j klmn o123 456p qrst [babjak][~/tmp/sed][21:06:37] cat file.txt | tr '\n' '@' | sed -e 's/@$//' | sed -e 's/123@456/123@678/g' | tr '@' '\n' abcd efgh i123 678j klmn o123 678p qrst [babjak][~/tmp/sed][21:06:40]Znak noveho riadku to zmeni za zavinac, sed-om urobi priamociare nahradenie a zavinac prelozi naspat na znak noveho riadku. Urcite by to islo elegantnejsie, ale elegantnost tohto je v tom, ze postacuju uplne zakladne vedomosti
tr
a sed
. [babjak][~/tmp/sed][21:35:54] cat file.txt abcd efgh i123 456j klmn o123 456p qrst [babjak][~/tmp/sed][21:36:04] perl -e 'my $file = `cat $ARGV[0]` ; $file =~ s/123\n456/123\n789/g ; print $file;' file.txt abcd efgh i123 789j klmn o123 789p qrst [babjak][~/tmp/sed][21:36:09]
popřípadě v Perlu něco takového:
perl -pe 's/^456/789/ if $predchoziradek ~~ /123$/;$predchoziradek=$_ ' << file.txt
my $file; { local $/ = undef; $file = <>; }
V sedu zhruba takhle:
sed '/123/ {n; s/456/789/}'
sed '/123/ {n; s/456/789/;}'
[babjak][~/tmp/sed][18:50:33] cat file.txt abcd efgh i123 456j klmn o123 456p qrst [babjak][~/tmp/sed][18:50:34] cat file.txt | sed '/123/ {n; s/456/789/}' sed: 1: "/123/ {n; s/456/789/}": bad flag in substitute command: '}' [babjak][~/tmp/sed][18:51:02] cat file.txt | sed '/123/ {n; s/456/789/;}' abcd efgh i123 789j klmn o123 789p qrst [babjak][~/tmp/sed][18:51:07]
Tiskni
Sdílej:
ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.