Я хочу удалить все строки/строки в файле с определенным символом '?' в моем случае. Я надеюсь, что в Bash, AWK или Perl есть однострочная команда. Спасибо
Удалить все строки в файле, содержащие определенный символ
Ответы (3)
Вот уже решения для grep, sed и perl — только для забавы, чистый bash:
pattern='?'
while read line
do
[[ "$line" =~ "$pattern" ]] || echo "$line"
done
переведено
- для каждой строки в STDIN
- сопоставьте его с образцом
=~
- и если совпадение не удачное
||
- вывести строку
person
jm666
schedule
31.05.2011
Вы можете использовать sed
для изменения файла «на месте»:
sed -i "/?/d" file
В качестве альтернативы используйте grep:
grep -v "?" file > newfile.txt
person
dogbane
schedule
31.05.2011
Вы можете использовать
-i
с GNU sed; это не стандартно для других версий, в общем.
- person Jonathan Leffler; 31.05.2011
Еще лучше, всего одна строка с использованием sed
sed '/?/d' input
используйте -i
для редактирования файла на месте.
person
Fredrik Pihl
schedule
31.05.2011
и насколько я понимаю, вы не можете сделать это в Perl, верно?
perl -pe '/?/d'
не работает.
- person kirill_igum; 18.01.2017