次の形式のテキストを含むファイルがあります:
User\ Name My\ Password
これは実際には 2 列のファイルであり、列にはエスケープされたスペースが含まれていることに注意してください。
cut -d' ' -f2
生産しますName
が、私は生産したいですMy Password
。
cut
エスケープされていないスペースに基づいてのみ区切られた and を使用することは可能ですか? そうでない場合、どのような代替コマンドを使用できますか?
答え1
GNUをお勧めしますgrep
アプローチ:
サンプル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
スペース(スペースの16進コード)に一致することです。\x20
[^\\]