Удалите целую строку если после “:” меньше чем 4 символа

Так как это - Linux не сохраняющий состояние, фактический корень / смонтирован через NFS от отдельной машины, где файлы, очевидно, смонтированы как rw. Благодаря @Martin von Wittich

3
25.05.2019, 19:11
5 ответов
[

]Вы можете использовать [][]sed[][]:[

] [
sed -r -e '/:.{0,3}$/d' data
] [

][]-r[] использует расширенные регулярные выражения (для []{}[]). Выражение []sed[] соответствует всем строкам двоеточием, за которым следует ноль до трех символов, а затем конец строки; []d[] удаляет эти строки. Все остальные будут распечатаны.[

].
4
27.01.2020, 21:14
[

] Есть много способов сделать это. [

] [

] Вот []perl[]:[

] [
$ perl -ne 'print unless /:.{0,3}$/' file
blue:fish
red:tomato
black:moon
]
0
27.01.2020, 21:14
[

] Эта команда AWK разбивается на []: [] и печатает строки, из которых второе поле имеет не менее 4-х символов (не менее 4-х символов). Предположение: []: [] присутствует всегда и не встречается несколько раз.[

] [
awk -F : "length($2) >= 4"
] [

] Если встречается несколько раз, то можно использовать []$NF[] вместо []$2[] для ссылки на последний столбец.[

].
2
27.01.2020, 21:14

В Баше:

while read; do
  [[ "$REPLY" =~ :.{4,} ]] && printf '%s\n' "$REPLY"
done

Затем перенаправьте, как вам нужно.

0
27.01.2020, 21:14

Использованиеgrep:

grep -E ':.{4,}$' file

Использование grep+sponge(из moreutils ), чтобы «редактировать» файл «на месте»:

grep -E ':.{4,}$' file|sponge file
0
27.01.2020, 21:14

Теги

Похожие вопросы