Szkriptek: Python, Perl, Bash, ...

Metakarakter beszúrás adott pozícióba parancssorsból

Adott egy file, benne több száz sor, változó hosszúságú hexadecimális string-el.
Hogy lehet a legegyszerűbben megoldani parancssorból, hogy adott pozícióba - konkrétan a 41. - beszúrjak egy metakaraktert?

input file.txt részlet:
f543ec4182900ab972ad2bf552008eafb3734a36bae914ac5e3e57f27aa323368
5c0ad0579061fd839db877c2c7c854c57fb759ba9ec05f72cc619feafdf2f602c

output:
f543ec4182900ab972ad2bf552008eafb3734a36:bae914ac5e3e57f27aa323368
5c0ad0579061fd839db877c2c7c854c57fb759ba9e:c05f72cc619feafdf2f602c

Köszönöm.

awk - delete metacharacter from a file

Mi a rossz az alábbi parancsban?
Szeretném törölni a backslash karaktert a file-okból "awk"-t használva. gsub függvényt használnám erre a célra. Ha más módon is lehet, megköszönöm a segítséget.

file.txt tartalom részlet:
$P$DuOxmeTb7uGqNkkzenh6BqBu5OmpDF\/
$P$DPUN9ULZv9ICq.o53w4Kk\/685Q7mdW0
$P$DbHTs7pYRbB4s5sHzXh\/JK7kFa4SIT0

kívánt output:
$P$DuOxmeTb7uGqNkkzenh6BqBu5OmpDF/
$P$DPUN9ULZv9ICq.o53w4Kk/685Q7mdW0
$P$DbHTs7pYRbB4s5sHzXh/JK7kFa4SIT0

command:
awk '{gsub ("\\", ""); print $0}' file
or
awk '{gsub ("'\'", ""); print $0}' file

"Sed"-et vagy "tr"-t használva működik:
tr -d "\\"
sed -E 's/\\\//\//g' file

Köszönöm.

Bash / LANGUAGE=hu nem működik

Ubuntu 16, egy idő óta nem megy a címben jelölt dolog, vagyis hogy a LANGUAGE környezeti változóval döntsem el hogy milyen nyelvű felülettel induljon egy program. Régebben ment.

Az alábbi trükközések sem segítenek:

LANG="hu_HU.UTF-8" firefox
LC_ALL="hu_HU.UTF-8" firefox

locale-gen parancs kimenete:

Generating locales (this might take a while)...
en_US.UTF-8... done
hu_HU.UTF-8... done
Generation complete.

Szeretnék néha magyarul, néha angolul indítani programokat (amiknek le van telepítve természetesen az adott nyelvű lokálja). Tisztán emlékszem hogy használtam a címben megadott módon régebben, viszont azt nem tudom hogy az még 14-es Ubuntun volt-e.


$ env | grep -i shell
SHELL=/bin/bash

$ env | grep -i lang
LANG=en_US.UTF-8
GDM_LANG=en_US
LANGUAGE=en_US

Ötlet?

Pendrive duplikalas

Sziasztok!

Az utobbi idoben megszaporodott az ugyanolyan tartalom sok pendrivera valo kiirasa az ugyfeleink reszere. Ez altalaban azt jelenti, hogy 20-30 pendrivera kell egy 10+Gb-os filet vagy fileokat kiirni. Gondolkodtam, hogy veszek egy 10-16 portos USB3-as HUB-ot es egyszerre irok legalabb tobbet. Viszont a software-es kivitelezesnel elakadtam. Nem nagyon talalok ra kesz megoldast.
Elsosorban osx kornyezetben erdekelne, de legalabb osx terminalban valo eszkozkeszlettel.
Feladat: mondjuk fel van bokve 16 pendrive. Ezeket egyszerre le kene formazni, EXFat-ra, ugyanolyan Volume nevvel. Utana pedig a forras file(okat) egyszerre felmasolni rajuk.
Ilyenekkel kiserleteztem ez mukodik is, de vmi szofisztikaltabb megoldas lehet elegansabb lenne :)

echo | xargs -n 1 cp

esetleg rsyncel ciklusban?

#!/bin/bash
for drive in /Volumes/*USB* ; do
echo rsync "$drive" &
done
wait

Ti hogy allnatok neki? Elore is koszonom az otleteket!

Bash kezdő

Sziasztok,

Van az alábbi scriptem:
https://pastebin.com/C19QWMEc

Úgy ahogy működik is, viszont van egy idegesitő hibája.

Ha a nemet választom, akkor nincs semmi gond:
neut@preshaz:/var/spool/MailScanner/quarantine/test# ./test.sh
I found 112 spams
Size of spams: 1.1M total
Do you want to delete ALL spams? [Yes/No] n
We didn't delete anything

neut@preshaz:/var/spool/MailScanner/quarantine/test# ./test.sh
I found 112 spams
Size of spams: 1.1M total
Do you want to delete ALL spams? [Yes/No] y
find: `./20170101/spam/7C2FCAC131.AAA20': No such file or directory
find: `./20170101/spam/C2320AC131.AA724': No such file or directory
find: `./20170101/spam/F1D18AC130.A9D80': No such file or directory
find: `./20170101/spam/968BCABFFB.A3419': No such file or directory
find: `./20170101/spam/7E0BAAC131.AFA06': No such file or directory
find: `./20170101/spam/1EFDBAC131.AFE16': No such file or directory
find: `./20170101/spam/8F6C3ABFFB.A2A7D': No such file or directory
find: `./20170101/spam/4756AAC131.AABF0': No such file or directory
find: `./20170101/spam/CCD4DAC131.A9992': No such file or directory
find: `./20170101/spam/A2EE9AC135.A9692': No such file or directory
find: `./20170101/spam/539B9AC131.AB474': No such file or directory
find: `./20170101/spam/2607DAC131.A8FA3': No such file or directory
find: `./20170101/spam/94448AC131.AD8F1': No such file or directory
find: `./20170101/spam/D2823AC131.AE86E': No such file or directory
Spams executed

A törlés lefut csak dobja a find az error-t.... A furcsasága hogy csak az első mappa összes elemére dobja ezt a hibát. Mit rontottam el?

Köszi.

awk - tolower toupper metódus használata

Most láttam, hogy awk-nak van kis/nagybetű konverzóra beépített metódusa.
Valamit elrontok viszont, mert szintaktikai hibával kilép...

pl. a marks.txt file tartalmát szeretném átkonvertálni nagybetűssé

marks.txt:
1) amit Physics 80
2) Rahul Maths 90
3) Shyam Biology 87
4) Kedar English 85
5) Hari History 89

command: awk '{toupper; print $0}' marks.txt
awk: cmd. line:1: {toupper; print $0}
awk: cmd. line:1: ^ syntax error

sed command - segítség kérés

Sed használatát gyakorlom.
A file "nevek.txt" tartalma:

1, George Washington, 1984, 1345
2, John Adams, 1234, 4321,
3, Thomas Jefferson, 1022, 1230
....

A kimenetre ezt szeretném:

1, Washington George
2, Adams John
.....

Ez a parancs valamiért nem működik:

"sed -r 's/^([0-9]{1,2}), ([\w .]+?) ([\w ]+?), ([0-9]{1,4}),/\1\3\2/' nevek.txt"

Tudtok segíteni?

sed/awk/grep

A kerdesem egyszeru, a megoldasaban elakadtam. Talan egy sed/awk/grep guru tudna segiteni.

van egy text fajlom, amiben ki kene torolnom az osszes olyan sort ami datummal kezdodik es a kovetkezo sor is datummal kezdodik.
Jelesul:

a
2017
2017
2017
b
2017
c
2017
2017

||
\ /
\/

a
2017
b
2017
c
2017

a lenyeg, hogy a legutolso datum maradjon meg.

[megoldva] php -> py

Segítene valaki átfogalmazni Pythonban ezt a PHP-s alapszkriptet?
Egyszer már nekiszaladtam, de a beolvasott tömb többszöri felhasználása nem volt triviális (valami iterációs mutatót kellett volna nullázni hozzá).


<?php
fclose(STDOUT); $STDOUT = fopen('out.valami', 'w');

define('d',";");
define('n',"\n");
$f_=file('in.valami',FILE_IGNORE_NEW_LINES | FILE_SKIP_EMPTY_LINES);

foreach($f_ as $i=>$f){
if ($i==0) continue;
$x=explode(d,$f);
// print_r($x);die;
// [0] => 000001
// [1] => 000023
// [2] => 00191
print implode(d,$x).n;
}

foreach($f_ as $i=>$f){
print $f.n;
}

?>

Szerk: és az empty függvény legfontosabb (warning-kiküszöbölő) funkcióját jól ellátja a https://www.tutorialspoint.com/python/dictionary_setdefault.htm