У меня есть файл, который с именем tmp
, который содержит 4 строки:Как удалить строку из файла в bash?
dirs
f1
f2
f3
Я хочу остаться с
командойf1
f2
f3
Что Баш помогает мне сделать это? (. Только Баш пожалуйста, не СЭД или AWK)
У меня есть файл, который с именем tmp
, который содержит 4 строки:Как удалить строку из файла в bash?
dirs
f1
f2
f3
Я хочу остаться с
командойf1
f2
f3
Что Баш помогает мне сделать это? (. Только Баш пожалуйста, не СЭД или AWK)
Вы могли бы использовать:
grep -v "dirs" tmp
-v
аргумент grep
сведет матч, то это исключает что-либо соответствия dirs
из файла tmp
Или если вы хотите чистый bash
решение:
while read -r line
do
if ! [[ $line =~ "dirs" ]]
then
echo $line
fi
done < tmp
Один из многих способов является используя хвост:
tail -n 3 tmp
да, я подумал об этом, но я знаю, сколько строк у меня будет –
Я привел один пример из 4 строк, но это может быть 5, но я могу сказать, что знаю, что строка, которую я не хочу всегда, будет первая строка –
Да, это не оптимальное решение. Для статических небольших файлов это нормально ... – heldt
регулярное выражение с Grep: либо
Grep 'е' TMP> name_of_output_file
или
Grep '[^ "DIRS"]' tmp> name_of_output_file
Работа для меня
Прочитайте строку за строкой и при необходимости исключите строку; в противном случае напишите во временный файл и, наконец, замените его исходным файлом. –
Можете ли вы показать мне пример? @BlueMoon –
OK. Нужно немного подробнее. Почему sed/awk исключены? В зависимости от того, что вы на самом деле пытаетесь исключить, зависит ли это от номера строки или содержимого строки? – Sobrique