ProxySampler — это CLI-инструмент golang для тестирования списков прокси:https://github.com/packetstream/proxysampler
proxysampler --output json --file./proxies.txt --endpoint https://ifconfig.co/json --include-response-body
{
"success": 3,
"fail": 0,
"average_ttfb": 693,
"results": [
{
"proxy": "https://proxyuser:proxypass_country-US@proxy.packetstream.io:31111",
"endpoint": "https://ifconfig.co/json",
"status_code": 200,
"response_body": "{\"ip\":\"47.149.139.253\",\"ip_decimal\":798329853,\"country\":\"United States\",\"country_eu\":false,\"country_iso\":\"US\",\"city\":\"Torrance\",\"latitude\":33.846,\"longitude\":-118.3456,\"asn\":\"AS5650\",\"asn_org\":\"Frontier Communications of America, Inc.\"}",
"latency": {
"ttfb": 552,
"connect": 29,
"tls_handshake": 141
},
"error": null
},
{
"proxy": "https://proxyuser:proxypass_country-US@proxy.packetstream.io:31111",
"endpoint": "https://ifconfig.co/json",
"status_code": 200,
"response_body": "{\"ip\":\"63.237.69.254\",\"ip_decimal\":1072514558,\"country\":\"United States\",\"country_eu\":false,\"country_iso\":\"US\",\"city\":\"Walkersville\",\"hostname\":\"ssl.clarkconstruction.com\",\"latitude\":39.4787,\"longitude\":-77.3484,\"asn\":\"AS16431\",\"asn_org\":\"The Clark Construction Group, Inc.\"}",
"latency": {
"ttfb": 534,
"connect": 28,
"tls_handshake": 114
},
"error": null
},
{
"proxy": "https://proxyuser:proxypass_country-US@proxy.packetstream.io:31111",
"endpoint": "https://ifconfig.co/json",
"status_code": 200,
"response_body": "{\"ip\":\"24.167.234.46\",\"ip_decimal\":413657646,\"country\":\"United States\",\"country_eu\":false,\"country_iso\":\"US\",\"city\":\"Milwaukee\",\"hostname\":\"cpe-24-167-234-46.wi.res.rr.com\",\"latitude\":43.1166,\"longitude\":-87.9904,\"asn\":\"AS10796\",\"asn_org\":\"Charter Communications Inc\"}",
"latency": {
"ttfb": 993,
"connect": 27,
"tls_handshake": 272
},
"error": null
}
]
}
Вы можете использовать следующую awk
программу:
awk '{sub(/:[^:]*:[^:]*$/,"",$2)}1' file.bim > updated_file.bim
или
awk '{sub(/(:[^:]*){2}$/,"",$2)}1' file.bim > updated_file.bim
Это будет использовать функцию sub()
для редактирования второго столбца($2
)путем замены двух последних :
и текста, следующего за ними, на «ничего», таким образом эффективно удаляя эту часть.
Если выходной файл должен быть разделен табуляцией -, используйте awk -v OFS="\t" '... '
.
В качестве альтернативы , если ваш файл разделен группами из более чем одного «пробела» и вы хотите убедиться, что форматирование разделителя полностью не изменилось, вы можете использовать
awk '{sub(/:[^:]*:[^: ]* /," ")}1' file.bim > updated_file.bim
, который будет искать шаблон «:
, за которым следует текст, за которым следует :
, за которым следует текст, за которым следует пробел», и заменяет его одним «пробелом». В вашем вводе этот шаблон встречается только в конце столбца 2, поэтому замена повлияет только на этот столбец.
Наконец, , если когда-либо в будущем количество:
-разделенных полей во втором столбце может измениться, но вы все равно хотите сохранить только первые два, вы можете прибегнуть к моему оригиналу хотя и менее переносимый вариант, который заменяет 2-й столбец только текстом вокруг первого:
(вместо текста за двумя последними словами «ничего»):
awk '{$2=gensub(/([^:]+:[^:]+).*/,"\\1","1",$2)}1' file.bim > updated_file.bim
Используйте sed, чтобы заменить все пустые места на " :", затем удалите поля $6 и $7 и поместите содержимое $4 и 5 долларов на 5 долларов с awk:
sed 's/ /:/g' bim | awk -F':' '{ $6=""; $7="" ; $4=$4$5; $5="" }1' > updated_file.bim
БЕЗ СЭД:
awk '{ gsub(/ /,":",$0); FS=":";$6=""; $7="" ; $4=$4$5; $5="" }1' bim > updated_file.bim
Удалить все после второго двоеточия во втором столбце и оставить все остальное:
awk '{ c=split($2, s, ":"); $2=s[1] (c>1?":":"") s[2]; }1' infile
как вы заметили, это удаляет повторяющиеся пробелы, когда мы повторно -оцениваем второй столбец, если это не является большой проблемой с вашей стороны; иначе используйте ниже sed
в качестве альтернативы:
sed -E 's/^([^ ]* *)([^: ]*:[^: ]*):[^ ]* (.*)/\1\2 \3/' infile
тест -дата;
::1 1:81995:9:C:T 0 8::199:59 T C
1:a: :1821249GA: 0 821:2:4 A G
111 1:828539:: 0 :::828539 T A
результат:
::1 1:81995 0 8::199:59 T C
1:a: :1821249GA 0 821:2:4 A G
111 1:828539 0 :::828539 T A
с awk
сначала с substr($2, 1, 8)
вы выбираете из 2 долларов то, что вам нужно. И выведите значение s
вместо $2
. Таким образом, ваш код с этим может быть:
awk 's = substr($2, 1, 8) {print $1, s, $3, $4, $5, $6}' file
1 1:819959 0 819959 T C
1 1:821249 0 821249 A G
1 1:821477 0 821477 G A
1 1:821843 0 821843 T C
1 1:823963 0 823963 C A
1 1:824357 0 824357 T C
1 1:824398 0 824398 C A
1 1:827972 0 827972 A G
1 1:828539 0 828539 T A
Обновлено для сохранения пробелов:
awk -F '[[:blank:]]{2,}' '$2 = substr($2, 1, 8) {print $1, $2, $3, $4, $5, $6}' file | column -t
1 1:819959 0 819959 T C
1 1:821249 0 821249 A G
1 1:821477 0 821477 G A
1 1:821843 0 821843 T C
1 1:823963 0 823963 C A
1 1:824357 0 824357 T C
1 1:824398 0 824398 C A
1 1:827972 0 827972 A G
1 1:828539 0 828539 T A
Следующие выходные данные могут быть получены с помощью команды sed
cat file.bim | sed 's/:[a-zA-Z]//g' >> updated_file.bim
or
cat file.bim | sed 's/:[[:alpha:]]//g' >> updated_file.bim
Выход:
1 1:819959 0 819959 T C
1 1:821249 0 821249 A G
1 1:821477 0 821477 G A
1 1:821843 0 821843 T C
1 1:823963 0 823963 C A
1 1:824357 0 824357 T C
1 1:824398 0 824398 C A
1 1:827972 0 827972 A G
1 1:828539 0 828539 T A
С GNU sed для\S
:
$ sed 's/\(:[^:]*\)\S*/\1/' file
1 1:819959 0 819959 T C
1 1:821249 0 821249 A G
1 1:821477 0 821477 G A
1 1:821843 0 821843 T C
1 1:823963 0 823963 C A
1 1:824357 0 824357 T C
1 1:824398 0 824398 C A
1 1:827972 0 827972 A G
1 1:828539 0 828539 T A
или с любым POSIX-кодом:
$ sed 's/\(:[^:]*\)[^[:space:]]*/\1/' file
1 1:819959 0 819959 T C
1 1:821249 0 821249 A G
1 1:821477 0 821477 G A
1 1:821843 0 821843 T C
1 1:823963 0 823963 C A
1 1:824357 0 824357 T C
1 1:824398 0 824398 C A
1 1:827972 0 827972 A G
1 1:828539 0 828539 T A