2015-04-28 3 views
0

Я пытаюсь удалить ряд слов в командной строке Unix с sed из файла, и я просто не могу понять это. Например, как я могу удалить слова в позициях 2-4? Если файл содержит: «Это файл, созданный мной». Я хочу, чтобы это было: «Это создано мной». Спасибо большое!Удалить диапазон слов с помощью sed

+1

Просьба указать четкий образец ввода/вывода. i.e .: «У меня есть это» и «Мне нужно это» –

+1

Это требование, которое вы используете 'sed'? Команда 'cut' будет работать намного лучше. – economy

+1

'cut', как указано выше, или' awk' будет лучшим решением для такого рода проблем. Удачи. – shellter

ответ

1

Попробуйте это GNU СЭД (для печати слова 1 и слова 5 до последнего слова):

echo "This is a file created by me." | sed 'y/ /\n/' | sed -n '1p;5,$p' | sed 'N;N;N;y/\n/ /' 

Выход:

 
This created by me. 
+0

Спасибо большое! Я попытался использовать файл sed s/[a-zA-Z0-9] * [a-zA-Z0-9] // '2,4', но он не работает, я полагаю, что это не очень хорошо. – Eduard

1

Вы можете использовать также использовать awk для этого:

echo "This is a file created by me." | awk '{for (i=1;i<=NF;i++) if (i<2||i>4) printf "%s ",$i;print ""}' 
This created by me. 
1

Это может сработать для вас (GNU sed):

sed -r 's/(\s+\S+){3}//' file 
Смежные вопросы