GNU/Linux >> Znalost Linux >  >> Linux

Provést `vyjmout` Změnit soubor na místě?

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í.


Linux
  1. Co se počítá jako úprava nebo změna souboru?

  2. Změnit Kdo je schopen Chmod?

  3. Jak použít chmod ke změně oprávnění k souboru?

  1. Příklady příkazů chattr pro změnu atributů souboru (učinit soubory neměnnými)

  2. Změnit datum vytvoření souboru

  3. Jak udělat soubor řídký?

  1. Je Rsync ~/foo Target/foo stejný jako Rsync ~/foo/ Target/foo/?

  2. Uložte úpravy na místo pomocí awk

  3. Jak udělám, aby soubor NELZE upravovat?