Как указать разделитель столбцов для `perl -a`? - PullRequest
1 голос
/ 04 апреля 2011

Я пытаюсь прочитать текстовый файл (используя perl), где в каждой строке есть несколько записей, например:

r1c1 & r1c2 & r1c3 \\
r2c1 & r2c2 & r2c3 \\

Итак, & - это разделитель записей.

Помощь Perl гласит:

$ perl -h 
  -0[octal]       specify record separator (\0, if no argument)

Почему вы используете восьмеричное число, я не знаю.Но 046 является восьмеричным ASCII разделителя &, поэтому я попробовал это:

perl -046 -ane 'print join ",", @F; print "\n"' file.txt

, где желаемый результат будет

r1c1,r1c2,r1c3 \\
r2c1,r2c2,r2c3 \\    

Но это не работает,Как ты делаешь это правильно?

Ответы [ 2 ]

7 голосов
/ 04 апреля 2011

Я думаю, что вы смешиваете две разные вещи. Разделитель записей, на который влияет -0, разделяет входные данные на «строки». -a делает каждую "строку" затем разделенной на @F, по умолчанию в пробелах. Чтобы изменить то, что -a разделяется, используйте переключатель -F, например -F'&'.

1 голос
/ 04 апреля 2011

Если вы сомневаетесь в параметрах командной строки perl, посмотрите на perldoc perlrun в командной строке.

Также, если вы используете параметр -l perl -F'&' -lane ..., он удалит конец строки (EOL) char каждой строки перед передачей его в ваш скрипт и будет добавлять его для каждой печати, так что вам не нужно вводить «\ n» в ваш код.Чем меньше символов в одном вкладыше, тем лучше.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...