У меня большие текстовые файлы с разделителями пробелами (2-5). Строки могут содержать «» или «-». Я хотел бы заменить, скажем, второе пространство на трубу.
Какой лучший путь?
Используя sed, я думал об этом:
sed -r 's/(^[a-z'-]+ [a-z'-]+\b) /\1|/' filename.txt
Любые другие / лучшие / простые идеи?
linux
command-line
sed
awk
dnkb
источник
источник
sed
информационного файла: «Примечание: стандарт POSIX не определяет, что должно происходить при смешивании реализацийg' and NUMBER modifiers, and currently there is no widely agreed upon meaning across
sed». Для GNU «sed» взаимодействие определяется следующим образом: игнорировать совпадения до NUMBERth, а затем сопоставлять и заменять все спички от NUMBERth на ".sed
. Я не уверен, что должен был бы поблагодарить вас за то, что вы стали дляsed
меня еще более полезными, но я все равно это сделаю. ;)Вы пробовали свою версию? Это сработало? Потому что я думаю, что это в основном хорошая идея. Я бы сделал немного по-другому, хотя:
Это примет любые символы в слове, которое не является пробелом, и примет более одного пробела между первыми двумя словами.
источник