Как переформатировать текст в файле в другое направление?

Примеры должны быть в / usr / share / doc / $ {package} / examples . Это описано в разделе политики 12.6 , и вы найдете такие примеры в большинстве систем, производных от Debian.

4
10.10.2018, 00:39
3 ответа

Другим супер -простым решением было бы преобразовать :s в пробелы с помощью sed, а затем напечатать слова с echoв цикле for:

for i in $(sed 's/:/ /g')
do
  echo $i
done

Этот сценарий работает со стандартного ввода на стандартный вывод.

0
27.01.2020, 20:48

Используя awk, как вы предложили:

$ awk '{ gsub(":", "\n", $0); print }' <file
Lead
Arrow1
Arrow2
Arrow3
Follow
Arrow4
Arrow5
Arrow6
Arrow7
Arrow8
Arrow9

Это просто заменяет каждый :во входных данных новой строкой.


Другое awkрешение, в котором используется переменнаяOFS(Разделитель полей вывода ):

awk -v OFS='\n' -F ':' '{ $1=$1; print }' <file

Назначение $1=$1выглядит фиктивным, но оно заставляет awkпереформатировать текущую входную запись в соответствии сOFSORS, но мы не меняем это значение по умолчанию, которое является новой строкой ), что в данном случае означает вставку новых строк между всеми полями с разделителями :-.


С помощью awkмы также могли просто перебирать:-поля с разделителями и печатать их по отдельности:

awk -F ':' '{ for (i = 1; i <= NF; ++i) print $i }' <file
1
27.01.2020, 20:48

Вы можете использовать trследующим образом:

<file tr ":" "\n"

Lead
Arrow1
Arrow2
Arrow3
Follow
Arrow4
Arrow5
Arrow6
Arrow7
Arrow8
Arrow9

или awkследующим образом:

<file awk '{gsub(/:/,"\n")}1'
Lead
Arrow1
Arrow2
Arrow3
Follow
Arrow4
Arrow5
Arrow6
Arrow7
Arrow8
Arrow9
8
27.01.2020, 20:48

Теги

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