grep abc student.csv | cut -d, -f 3 >text.txt
Это сначала извлечет каждую строку из student.csv
, содержащую подстроку abc
в любом месте, а затем вырежет третий столбец с разделителями-запятыми -из этих строк и сохранит их в text.txt
.
С данными, указанными в вопросе, text.txt
в конечном итоге будет содержать
1/1/18
1/1/17
Это зависит от того, что исходный файл представляет собой простой CSV-файл, т. е. без полей, содержащих встроенные запятые или символы новой строки.
Хотите ли вы искать abc
как полное слово , тогда используйте grep -w abc
вместо просто grep abc
. Это позволит избежать сопоставления строк, содержащих такие строки, как abcde
, но все равно будет соответствовать полю, содержащему abc xyz
.
Если вы ищете поля, которые содержат произвольную сложную строку (все еще в простом файле CSV )и если вам нужно, чтобы поле было точно равно этой строке, вам придется перебирать поля в каждой строке:
string='some string' awk -F, '{ for (i = 1; i <= NF; ++i) if ($i == ENVIRON["string"]) { print $3 ; next } }' student.csv
Этот awk
код перебирает все поля в каждой строке в поисках поля, -разделенного запятыми, значение которого точно совпадает со значением переменной окружения string
. Как только такое поле найдено, печатается 3-е поле.
Я не уверен, что что-то изменилось с 2018 года, но теперь, в 2021 году, в Debian Bullseye изменение конфигурации, описанное в вопросе, работает нормально.pam_xauth
создает временный файл с файлом cookie и устанавливает $XAUTHORITY
для указания на этот файл.