У меня есть файлы крупного текста с разграниченными строками пространства (2-5). Строки могут содержать" '" или "-". Я хотел бы заменить, говорят что второе пространство с каналом.
Что состоит в том, чтобы пойти лучший способ?
Используя sed я думал об этом:
sed -r 's/(^[a-z'-]+ [a-z'-]+\b) /\1|/' filename.txt
Какие-либо other/better/simpler идеи?
Можно добавить число в конце команды замены. Например, следующее заменит вторым возникновением old
со строкой new
на каждой строке file
:
sed 's/old/new/2' file
Так, вместо Вашего предлагаемого решения можно использовать:
sed 's/ /|/2'
Для получения дополнительной информации посмотрите, например, это sed учебное руководство.
Вы пробовали свою версию? Это работало? Поскольку я думаю, что это - в основном хорошая идея. Я сделал бы немного по-другому, хотя:
sed -re 's/^([^ ]+ +[^ ]+) /\1|/'
Это примет любые символы, одним словом, который не является пространством и примет больше чем одни пробелы между первыми двумя словами.