Показаны сообщения с ярлыком bash. Показать все сообщения
Показаны сообщения с ярлыком bash. Показать все сообщения

bash-скрипт для curl-запроса к Elasticsearch


#!/bin/bash

export ELASTICSEARCH_ENDPOINT="http://localhost:9200"

# Create indexes

curl -XPUT "$ELASTICSEARCH_ENDPOINT/play" -d '{
    "mappings": {
        "type": {
            "properties": {
                "feed_uids": {
                    "type": "string",
                    "index": "not_analyzed"
                }
            }
        }
    }
}'

# Index documents
curl -XPOST "$ELASTICSEARCH_ENDPOINT/_bulk?refresh=true" -d '
{"index":{"_index":"play","_type":"type"}}
{"feed_uids":["math.CO","cs.IT"]}
{"index":{"_index":"play","_type":"type"}}
{"feed_uids":["cs.IT"]}
'

# Do searches

curl -XPOST "$ELASTICSEARCH_ENDPOINT/_search?pretty" -d '
{
    "query": {
        "filtered": {
            "filter": {
                "terms": {
                    "feed_uids": [
                        "cs.IT"
                    ]
                }
            }
        }
    }
}
'

источник

Conemu - эмулятор консольного окна: установка, настройка и работа

Как в файле получить номер строки в которой в первый раз встречается заданное слово

bash

$ cat input.txt 
korn is excellent
c is superb
bash is best
bash is handy
all are best

$ grep -n "bash" input.txt | sed '1!d' 
3:bash is best
$ grep -n "bash" input.txt | sed '1!d' | awk -F : '{print $1}'
3

$ awk -F : '/bash/ {print NR}' input.txt
3
4
$ awk -F : '/bash/ {print NR}' input.txt | sed '1!d'
3

Как извлечь строку перед (или после) регулярным выражением, но не строку содержащую регулярное выражение

bash

Извлечение строки перед регулярным выражением


$ cat input.txt
Lehe
Alex
Themo
Demo
Saik
$ awk '/Alex/ {print x};{x=$0}' input.txt
Lehe
$ sed -n '/Alex/{g;1!p;};h' input.txt
Lehe
$ S=`grep -n Alex input.txt | awk -F : '{print $1}'`; S=`expr $S - 1`; sed -n "$S p" input.txt
Lehe

Извлечение строки после регулярного выражения


$ sed -n '/Lehe/{n;p;}' input.txt
Alex
$ awk '/Lehe/{getline;print}' input.txt
Alex
$ S=`grep -n Lehe input.txt | awk -F : '{print $1}'`; S=`expr $S + 1`; sed -n "$S p" input.txt 
Alex

Как узнать количество строк в файле

bash

$ cat input.txt 
this is line 1
this is line 2
some lines here


there are 2 blank lines above
this is last line
$ sed -n '$=' input.txt 
7
$ awk 'END {print NR}' input.txt 
7
$ wc -l input.txt | cut -d " " -f1

Результат последней команды зависит от системного вывода, т.е. если вывод такой "       7 input.txt", то команда не сработает верно, однако если вывод такой "7 input.txt", то вырезка пройдет успешно и команды выдаст ожидаемый результат.

Как извлечь первую / последнюю строку из файла

bash

Входные данные

$ nano input.txt
this is line 1
this is line 2
some lines here


there are 2 blank lines above
this is last line
$ 

Вывод первой строки

  • $ head -1 input.txt 
  • $ sed q input.txt 
  • $ awk 'NR>1 {exit};1' input.txt 

Вывод первых двух строк

  • $ awk 'NR<3' input.txt
  • $ head -2 input.txt

Вывод последней строки

  • $ tail -1 input.txt 
  • $ sed '$!d' input.txt 
  • $ sed -n '$p' input.txt 
  • $ awk 'END {print}' input.txt 

Как вывести строки из файла, которые не соответствуют регулярному выражению

bash

Входные данные:
$ nano input.txt
this is line 1
this is line 2
some lines here


there are 2 blank lines above
this is last line


Решения:
  • $ grep -v 'this' input.txt 
  • $ awk '!/this/' input.txt 
  • $ sed '/this/d' input.txt 
  • $ sed -n '/this/!p' input.txt 

Вывод:
some lines here


there are 2 blank lines above


$ 

Разница между while и until

bash

Цикл while выполняет тело цикла пока условие истинно.

Цикл until выполняет тело цикла пока условие ложно. Другими словами цикл until выполняется до тех пор пока условие не станет истинным.

Как удалить пустые строки из файла

Входные данные

Создадим для примера файл input.txt с таким содержанием:
НАЧАЛО
this is line 1
this is line 2
some lines here


there are 2 blank lines above
this is last line


КОНЕЦ
Метки НАЧАЛО и КОНЕЦ не входят в содержание файла.