awk как разделить в разных файлах все строки с одинаковым содержимым в данном столбце

Очевидно, что вы не можете sshподключиться к iOT в режиме U -Boot, поскольку ядро ​​Linux еще даже не начало загружаться.

Одним из возможных решений является подключение sshинтерфейса Wi-Fi к другому дешевому iOT рядом с вашей платой (, например, Orange PI или rpi ).

Эта вторая плата оснащена USB-портом для последовательного кабеля USB-TTL Debug Console, PL2303. Этот адаптер, в свою очередь, подключается к вашей целевой плате через контакты JTAG/консоли.

Таким образом, вы sshпереходите на 2-ю плату под управлением Linux и запускаете терминальную программу, например, minicomдля подключения через RS -232 к вашей целевой плате.

Другим возможным решением является покупка адаптера Bluetooth-последовательный порт и доступ к нему через Bluetooth. Я предпочитаю первый, который отвечает непосредственно на ваш вопрос, и часто проще начать работать и выполнять отладку.

1
10.08.2020, 21:14
3 ответа

Вы должны иметь возможность просто использовать поле в имени выходного файла. Простое решение:

awk -F, '{print > ("file_" $4 ".csv")}' Test.csv

Это работает по крайней мере в GNU awk и создает file_A.csv, file_B.csvи т. д. Обратите внимание, что при этом все выходные файлы остаются открытыми, и чем больше их, тем медленнее, особенно если вы нажмете на процесс -лимит открытых файлов.

-F,устанавливает запятую в качестве разделителя полей.

Я не уверен, что должен делать показанный вами скрипт.

3
18.03.2021, 23:13

Что-то вроде& #x00A0;это:

$ awk -F, '{ print $0 >> "file-" $4 ".txt"; }'./tmp.txt

Так же, как упоминается в & #xA0; @ilkkachu, флаг -Fна& #xA0;изменить& #xA0;разделитель полей с& #xA0;на& #xA0;по умолчанию, символы пробела, to& #xA0;a& #xA0;запятая.& #x2003Вы должны использовать >>вместо& #xA0;из& #xA0; >чтобы& #xA0;что& #xA0;вы не перезаписывали& #xA0;файл если& #xA0;оно& #xA0;существует.

2
18.03.2021, 23:13

Питон

#!/usr/bin/python
uni=[]
k=open('file.txt','r')
for i in k:
    
    g=i.split(",")[3].strip()
    if g not in uni:
        uni.append(g)



for m in uni:
    f=open("{0}.txt".format(m),'w')
    l=open('file.txt','r')
    for d in l:
        if m in d.split(",")[3].strip():
            f.write(d)

Лучшее решение, представленное в awk, это просто моя попытка

for i in `awk -F "," '{if(!seen[$4]++)print $4}' file.txt`; do awk -v i="$i" -F "," '$4==i{print $0}' file.txt >$i.txt; done
0
18.03.2021, 23:13

Теги

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