Көптеген мәтіндік файлдар үшін бірінші бағандағы пунктуация белгілерін табыңыз және ауыстырыңыз

Осы лауазымға ұқсас шешім қажет ( Белгілі бір терминді табыңыз және ауыстырыңыз бірнеше файлдарда ), бірақ әрбір бөлінген қойынды мәтіндік файлының бірінші бағанында пунктуация белгілерін ауыстыру үшін.

Мысал:

file1.txt
afile2.txt
3file.txt
...

барлық басқа файл атаулары .txt арқылы аяқталады

Txt файлдарының пішімі бағанның арасында «қойынды» бар және келесідей:

aaaa:bbb    second_column    third_column
w:xyz    another_second_column    another_third_column

Бірінші бағандағы : дегенді ## сияқты басқа белгілерге ауыстыру керек.

Өтінемін көмектесіңіз.

Perl : таңбаны баған кескіш ретінде қарастырады ма?

0
Сіздің пікірлеріңізге негізделген болсаңыз, сіз Wrong Question сұрағаныңызды сезінемін. Неліктен екі жақты алып тастағыңыз келеді? Бұл Perl-дің мета-кейіпкері емес.
қосылды автор TLP, көзі

1 жауаптар

## арқылы жолдағы бірінші бөліктегі бөлектелген бағанда бірінші қос нүктені ауыстырыңыз:

perl -i.bak -pe's/^([^\t:]*):/$1##/' *.txt

Ол барлық .txt-файлдарын ағымдағы каталогты резервтік көшіру нұсқаларын .bak-файлдарға өңдейді.

Міне, түсіруді талап етпейтін нұсқа (ұсыныста @Brad Gilbert ұсынған):

perl -i.bak -pe's/^[^\t:]*\K:/##/' *.txt

Екі сценарий бірдей нәтиже береді.

3
қосылды
s /:/##/ жеткілікті. Алайда +1.
қосылды автор Toto, көзі
@ M42: Бұл бірінші бағанда : жоқ, содан кейін s /:/##/ дұрыс емес.
қосылды автор jfs, көзі
@horkust: Мәселеңізді (ең кіші енгізуді, өңдейтін кодты, күтілетін нәтижелерді және орнына не беретіндігіңізді) көрсететін ең аз үлгісін құрыңыз және оны сұрақ ретінде жіберіңіз .
қосылды автор jfs, көзі
perl -i.bak -pe's/^ [^ \ t:] * K:/##/'* .txt Perl жаңа нұсқаларында жұмыс істейді
қосылды автор Brad Gilbert, көзі
Мен «:» таңбасы болған кезде бірінші бағанды ​​сығып аламын. Сондықтан ауыстыру қажет. «Perl» -те не істеу керек? Иә, ^ \ t 2-ші және 3-ші бағанды ​​қолдарсыз қалдырады.
қосылды автор horkust, көзі