Непрактичный, но несколько завораживающий :bash расширенные шаблоны файлов:
shopt -s extglob
getent passwd |
cut -d: -f1 |
while IFS= read -r name; do
[[ $name == ?????@(|?|??|???|????|?????) ]] && echo "$name"
done
tail
+tr
:
tail -n +2 file | tr -d \"
tail -n+2
печатает файл, начиная со второй строки и до конца. tr -d \"
удаляет все двойные кавычки.
Это должно работать:
sed -i '1d;s/"//g' filename
Пояснение:
-i
изменит файл на месте 1d
удалит первую строку s/"//g
удалит все "
в файле Вы можете сначала попробовать без -i
, и вывод будет выводиться на стандартный вывод.
Существует много способов получить желаемый результат, один из них — cut -c
. Просто вам нужно определить диапазон символов для извлечения и направить вывод в команду tail --lines=+2
для удаления заголовка (первой строки ). Например:
cut -c2-9,11-14 <your_file_name> | tail --lines=+2
Опция -c2-9,11-14
определяет диапазон позиций символов от 2 до 9 (позиции символов для столбца ID )и от 11 до 14 (позиции символов для остальных символов, за исключением ' " ).
Команда tail --lines=+2
печатает все строки из вашего файла, начиная со второй строки.
Для получения дополнительной информации о команде cut
посетите сайт .
Использование Perl:
perl -ne ' { s/"//g; print if $. > 1 }' file
ИЛИ
perl -ne ' { if ($.>1) {s/"//g;print} }' file
s/"//g; => Удаляет все двойные кавычки в текущей строке файла (, хранящиеся в $ _по умолчанию)
если $. > 1 => Если номер текущей строки больше 1
Решение проблемы, как она представлена в заголовке, т.е. удаление двойных кавычек из первого столбца, разделенного пробелом -, только:
awk -F ' ' '{ gsub("\"", "", $1) }; NR > 1' file
При этом используется команда gsub()
для удаления всех двойных кавычек из первого поля каждой строки. NR > 1
в конце гарантирует, что первая строка не будет напечатана.
Чтобы удалить двойные кавычки из первого поля, но только если они появляются как первый и последний символ поля:
awk -F ' ' '$1 ~ /^".*"$/ { $1 = substr($1, 2, length($1) - 2) }; NR > 1' file
При этом используется регулярное выражение ^".*"$
для определения наличия двойных кавычек в начале и конце первого поля, и если они есть, то запускается блок, извлекающий внутреннюю часть строки с помощью substr()
.. Любые внутренние двойные кавычки в поле сохраняются.