Обратите внимание на подробности того, как кросс-компиляция драйверов MadWifi для других архитектур.Например, в вашем случае вы пытаетесь скомпилировать для ARM4, хотя, возможно, не намеренно.
выдержка
Кросс-компиляция
Система сборки предназначена для поддержки кросс-компиляции без любые модификации файлов распространения. Достаточно указать какие-либо параметры в командной строке make.
В большинстве случаев необходимо определить только KERNELPATH и CROSS_COMPILE. CROSS_COMPILE - это префикс для инструментов кросс-компиляции. Например, если кросс-компилятор называется arm-linux-gcc, установите для CROSS_COMPILE значение "arm-linux -":
$ make KERNELPATH = / usr / src / linux-arm CROSS_COMPILE = arm-linux -
Система сборки определяет ARCH и TARGET на основе файла .config в дереве сборки Linux. В некоторых необычных системах может потребоваться указать TARGET в командной строке . Если ARCH определяется неправильно, сообщите об этом.
Вы можете попробовать с помощью sed:
sed '
:A
2,$ {
/[^"]\"$/! {
N
bA
}
s/\n//g
}
' infile
Захват в каждой строке от 2 до конца, если последний символ "
Если нет, получите новую строку и перезапустите цикл.
В конце цикла удалите все "\n".
Вы можете сделать это с помощью версии GNU sed
, используя расширенную поддержку регулярных выражений, как показано:
Команда -строка:
$ sed -Ee '
1b
/^("[^"]*"[^"]*)*$/!{
N;s/\n/ /;s/^/\n/;D
}
' input.csv
Результаты:
ID,Name,Text
"1","abc","Line 1"
"2","def","Line2 ""line2"",line2"
"3","ghi","line3"
Пояснение:
-E
включает расширенный режим регулярных выражений. 1b
выведет заголовок на стандартный вывод как есть. /^("[^"]*"[^"]*)*$/
будет соответствовать строке, полностью сбалансированной по отношению к двойным кавычкам. N
, и удаляем новую строку. С помощьюPOSIX
sed
вам нужно будет несколько изменить приведенное выше:
$ sed -e '
1b
/^\("[^"]*"[^"]*\)*$/b
N;s/\n/ /;H;s/.*//;x;D
' input.csv
С вашим файлом проблем нет. Он имеет встроенные символы новой строки и двойные кавычки. Парсер CSV сможет правильно с этим справиться. Экранирование двойных кавычек с помощью"
(при двойном заключении в кавычки поля )— правильный способ избежать встроенных двойных кавычек в файле CSV.
Чтобы заменить встроенные символы новой строки в файле CSV на символ @
, вы можете сделать это:
$ csvformat -M '@' file.csv | tr '\n@' '@\n'
1,abc,Line 1
2,def,"Line2@""line2"",line2"
3,ghi,line3
Здесь используется csvformat
из набора инструментов csvkit . Это правильный парсер CSV, способный переформатировать файлы CSV.
Приведенный выше конвейер команд сначала заменяет все символы новой строки, в которые не встроены с символом @
. Затем я использую tr
для замены оставшихся символов новой строки и символов @
друг с другом, в результате чего получается CSV-файл, в котором встроенные символы новой строки @
.
Это связано с тем, что исходные данные в файле не содержат символов @
.
Если затем вы хотите использовать пробелы вместо маркера того места, где изначально были новые строки, используйте tr '\n@' ' \n'
вместо tr
, показанного выше:
$ csvformat -M '@' file.csv | tr '\n@' ' \n'
1,abc,Line 1
2,def,"Line2 ""line2"",line2"
3,ghi,line3
Обратите внимание, что это чрезвычайно затруднит повторную -вставку исходных символов новой строки, если в данных (есть другие пробелы, как в третьем поле первой строки ). ].
Если вы предпочитаете, чтобы csvformat
не удалял все ненужные двойные кавычки, используйте его с-U 1
:
$ csvformat -U 1 -M '@' file.csv | tr '\n@' ' \n'
"1","abc","Line 1"
"2","def","Line2 ""line2"",line2"
"3","ghi","line3"
Использование Raku (, ранее известного как Perl _6)
raku -MText::CSV -e 'my $csv=Text::CSV.new; .perl.put for $csv.getline_all(open($*ARGFILES, :r, :!chomp));'
Пример ввода:
ID, Name, text
"1","abc","Line 1"
"2","def","Line2
""line2"",line2"
"3","ghi","line3"
Пример вывода:
$["ID", "Name", "text"]
$["1", "abc", "Line 1"]
$["2", "def", "Line2\n\"line2\",line2"]
$["3", "ghi", "line3"]
Вы можете обрабатывать кавычки и встроенные символы новой строки, используя язык программирования Raku и специальный модуль (, например.Text::CSV
). Для визуализации символа \n
я добавил вызов.perl
(FYI, .raku
также работает ). Добавьте сопоставление в поля, чтобы изменить встроенные символы новой строки на символы подчеркивания (дополнительный код, ниже):
raku -MText::CSV -e 'my $csv=Text::CSV.new; .put for $csv.getline_all(open($*ARGFILES, :r, :!chomp)).map(*.subst("\n","_", :g));'
Обновлен выход (1):
ID Name text
1 abc Line 1
2 def Line2_"line2",line2
3 ghi line3
Из первоначальной публикации OP действительно неясно, нужны ли «двойные» двойные -кавычки (или нет ). Простое добавление вызова .perl
к коду выше дает экранированные двойные кавычки -(ниже ), что может быть более желательным:
Обновлен выход (2):
"ID Name text"
"1 abc Line 1"
"2 def Line2_\"line2\",line2"
"3 ghi line3"
https://modules.raku.org/dist/Text::CSV:cpan:HMBRAND
https://github.com/Tux/CSV
https://raku.org