Так как это - Linux не сохраняющий состояние, фактический корень / смонтирован через NFS от отдельной машины, где файлы, очевидно, смонтированы как rw. Благодаря @Martin von Wittich
]Вы можете использовать [][]sed[
][]:[
sed -r -e '/:.{0,3}$/d' data
]
[][]-r[
] использует расширенные регулярные выражения (для []{}[
]). Выражение []sed[
] соответствует всем строкам двоеточием, за которым следует ноль до трех символов, а затем конец строки; []d[
] удаляет эти строки. Все остальные будут распечатаны.[
] Есть много способов сделать это. [
] [] Вот []perl[
]:[
$ perl -ne 'print unless /:.{0,3}$/' file
blue:fish
red:tomato
black:moon
] ] Эта команда AWK разбивается на []: [
] и печатает строки, из которых второе поле имеет не менее 4-х символов (не менее 4-х символов). Предположение: []: [
] присутствует всегда и не встречается несколько раз.[
awk -F : "length($2) >= 4"
]
[] Если встречается несколько раз, то можно использовать []$NF[
] вместо []$2[
] для ссылки на последний столбец.[
В Баше:
while read; do
[[ "$REPLY" =~ :.{4,} ]] && printf '%s\n' "$REPLY"
done
Затем перенаправьте, как вам нужно.
Использованиеgrep
:
grep -E ':.{4,}$' file
Использование grep
+sponge
(из moreutils ), чтобы «редактировать» файл «на месте»:
grep -E ':.{4,}$' file|sponge file