К сожалению, модуль файловой системы cifs
ядра вообще не читает /etc/samba/smb.conf
. Клиентский модуль CIFS, который позволяет монтировать файловые ресурсы Windows, полностью отделен от Samba.
Уровень протокола по умолчанию в модуле cifs
был изменен на SMB3 в ванильном ядре версии 4.13, а исправление согласования нескольких диалектов -(фактически установило значение по умолчанию на «SMB2.1 или более позднюю версию» )был добавлен к ядрам ванили в сентябре 2017 года.
Я почти уверен, что в «корпоративных» дистрибутивах Linux исправление было перенесено на более ранние ядра, но в Arch единственным вариантом может быть обновление ядра до версии 4.13 или более поздней.
Вот ссылка на соответствующий патч в Git на kernel.org. Идентификатор фиксации может быть полезен при отслеживании исправления в определенных версиях ядра.
Нет ничего плохого в решении @terdon, но просто для удовольствия gawk
решение, использующее
awk -F':[^a-z]+' '{print $1, $2}' file1
Составляет IFS
как контекстуальное regex
, которое соответствует любой непрерывной строке, начинающейся с :
, за которой следует комбинация переменной длины из чего угодно, кроме строчных букв [^a-z]+
, что просто оставляет вам два нужных фрагмента.
Помимо всех решений GNU coreutil, он также будет работать, если вы откроете его в vim
и наберете
:%norm 0f:f:vf hd
, за которым следует Enter
.
Что он делает:
:
переводит вас в командный режим
%
модификатор для запуска norm
во всех строках файла
norm
команда, которая может выполняться на нескольких строках и работает так же, как если бы вы набрали то, что следует за ней в обычном режиме.
0
чтобы перейти к началу строки
f:
для перехода к следующему вхождению символа двоеточия в тексте (т. е. вашего разделителя полей. Сделайте это дважды, чтобы перейти к началу 3-го столбца
v
для входа в визуальный режим (, потому что это значительно упрощает выбор материала для удаления:-))
f˽
(обратите внимание на пробел!! )для перехода к следующему вхождению пробела (т. е. к другому разделителю полей )h
чтобы перейти на один символ влево (чтобы мы не удаляли пробел, когда мы удаляем наш выбор впоследствии )и, наконец,
d
для удаления выбранного материала
Если все входные значения совпадают, то просто вывести все столбцы, кроме этих двух:
awk -F'[: ]' '{ print $1":"$2" "$5 }' inputFile
Несколько вариантов:
$ awk -F'[: ]' '{print $1":"$2,$5}' file
1:a rs123
1:b rs456
1:c rs174
Это указывает awk
использовать либо пробел, либо :
в качестве разделителя полей, а затем напечатать первое поле, :
, второе поле и 5-е поле.
$ sed -E 's/^([^:]*:[^:]*):.* (.*)$/\1 \2/' file
1:a rs123
1:b rs456
1:c rs174
Здесь sed
захватывает любой не-:
([^:]*
)от начала строки(^
)до первого :
и следующего участка не-:
символов до второго :
. Затем мы сопоставляем все до последнего пробела строки и захватываем все символы после него. Наконец, вся строка заменяется двумя захваченными паттернами (\1 \2
).
$ perl -pe 's/(.+?:.+?):.*\s(\S+)$/$1 $2/' file
1:a rs123
1:b rs456
1:c rs174
Это та же основная идея, что и описанный выше подход sed, но в нем используются не -жадные шаблоны регулярных выражений и выполняется поиск не -пробельных символов после последнего пробельного символа в строке.