Как удалить кавычки из текста

Непрактичный, но несколько завораживающий :bash расширенные шаблоны файлов:

shopt -s extglob

getent passwd | 
  cut -d: -f1 | 
  while IFS= read -r name; do 
    [[ $name == ?????@(|?|??|???|????|?????) ]] && echo "$name"
  done

7
21.05.2020, 23:52
5 ответов

tail +tr:

tail -n +2 file | tr -d \"

tail -n+2печатает файл, начиная со второй строки и до конца. tr -d \"удаляет все двойные кавычки.

22
18.03.2021, 23:34

Это должно работать:

sed -i '1d;s/"//g' filename

Пояснение:

  • -iизменит файл на месте
  • 1dудалит первую строку
  • s/"//gудалит все "в файле
  • .

Вы можете сначала попробовать без -i, и вывод будет выводиться на стандартный вывод.

15
18.03.2021, 23:34

Существует много способов получить желаемый результат, один из них — 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посетите сайт .

2
18.03.2021, 23:34

Использование Perl:

perl -ne ' { s/"//g; print if $. > 1 }' file

ИЛИ

perl -ne ' { if ($.>1) {s/"//g;print}  }' file

s/"//g; => Удаляет все двойные кавычки в текущей строке файла (, хранящиеся в $ _по умолчанию)

если $. > 1 => Если номер текущей строки больше 1

4
18.03.2021, 23:34

Решение проблемы, как она представлена ​​в заголовке, т.е. удаление двойных кавычек из первого столбца, разделенного пробелом -, только:

awk -F ' ' '{ gsub("\"", "", $1) }; NR > 1' file

При этом используется команда gsub()для удаления всех двойных кавычек из первого поля каждой строки. NR > 1в конце гарантирует, что первая строка не будет напечатана.

Чтобы удалить двойные кавычки из первого поля, но только если они появляются как первый и последний символ поля:

awk -F ' ' '$1 ~ /^".*"$/ { $1 = substr($1, 2, length($1) - 2) }; NR > 1' file

При этом используется регулярное выражение ^".*"$для определения наличия двойных кавычек в начале и конце первого поля, и если они есть, то запускается блок, извлекающий внутреннюю часть строки с помощью substr().. Любые внутренние двойные кавычки в поле сохраняются.

7
18.03.2021, 23:34

Теги

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