man
stránka mi nedává moc naděje, ale doufám, že je to nezdokumentovaná (a/nebo GNU specifická) funkce.
Přijatá odpověď:
nemůžete. Buď použijte ed nebo GNU sed nebo perl, nebo udělejte to, co dělají v zákulisí, tedy vytvoření nového souboru pro obsah.
ed
, přenosný:
ed foo <<EOF
1,$s/^([^,]*),([^,]*),([^,]*).*/1,3/
w
q
EOF
GNU sed
:
sed -i -e 's/^([^,]*),([^,]*),([^,]*).*/1,3/' foo
Perl:
perl -i -l -F, -pae 'print @F[1,3]' foo
cut
, vytvoření nového souboru (doporučeno, protože pokud je váš skript přerušen, můžete jej spustit znovu):
cut -d , -f 1,3 <foo >foo.new &&
mv -f foo.new foo
cut
, nahrazující soubor na místě (zachovává vlastnictví a oprávnění foo
, ale potřebuje ochranu proti přerušení):
cp -f foo foo.old &&
cut -d , -f 1,3 <foo.old >foo &&
rm foo.old
Doporučuji použít jeden z cut
založené metody. Tímto způsobem nejste závislí na žádném nestandardním nástroji, můžete použít ten nejlepší nástroj pro danou úlohu a máte pod kontrolou chování při přerušení.