У меня есть файл с текстом в формате:
User\ Name My\ Password
Обратите внимание, что на самом деле это файл из двух столбцов, в которых столбцы содержат экранированные пробелы.
cut -d' ' -f2
производит Name
, но я хочу производить My Password
.
Можно ли использовать cut
и разделять только на основе неэкранированных пробелов? Если нет, какую альтернативную команду я могу использовать?
решение1
Я бы предложил GNUgrep
подход:
Образец input.txt
:
User\ Name My\ Password
first\ field second\ field
Вырежьте 2-е поле из2-колоночныйфайл:
grep -Po '[^\\]\x20\K.*' input.txt
Выход:
My\ Password
second\ field
Или то же самое сsed
:
sed 's/.*[^\\]\x20\(.*\)/\1/' input.txt
----------
Самая важная часть шаблона регулярного выражения — это [^\\]\x20
соответствие пробелу \x20
(шестнадцатеричному коду пробела), если ему предшествует любой символ, кроме экранирующего обратного слеша.[^\\]