Как добавить кавычки к значениям поля разрыва строки в файле

По первому вопросу см. Википедию , здесь у вас есть минимальные требования. Второй вопрос, просто поиск в Google . Третий вопрос с Linux.org . В-четвертых, для меня это Ubuntu, но это зависит от того, что я хочу делать.

Я рекомендую вам, если вы будете использовать систему Gnu / Linux, использовать Google, я нашел все ваши ответы всего за 5 минут поиска.

Системы GNU / Linux дружественны к Google.

2
24.01.2019, 12:23
3 ответа

Вы можете попробовать этот awk:

awk -F'\n' '!f{$1="\""$1;f=1}{f=f+gsub("[|]","\"|\"")}f==3{$0=$0"\"";f=0}1' infile
1
27.01.2020, 22:08

Вы можете сделать это с помощьюperl:

perl -0pe 's/([^|]*)\|([^|]*)\|([^|\n]*)(\n|$)/"\1"|"\2"|"\3"\4/g' input_file
  • -0читать файл сразу, а не построчно.
  • -pнапечатать строку в конце
  • -eвыражение
  • s/pattern/replacement/gЗаменить шаблон заменой
1
27.01.2020, 22:08
$ cat input.txt | tr "\n" "\t" \
  |awk -v FS="|" -v OFS="|" '{for(i=1;i<=NF;i++) $i="\""$i"\"";}1' \
  |tr "\t" "\n"
  • trпреобразовать новую строку во вкладку. Таким образом, вход линеаризуется
  • Мы указываем awkобрабатывать |как разделитель полей. Теперь мы можем перебрать каждое поле и добавить кавычки вокруг. После этого печатается вся строка
  • trпреобразует вкладку обратно в новую строку
0
27.01.2020, 22:08

Теги

Похожие вопросы