エスケープされていないスペースで区切られたカットですか?

エスケープされていないスペースで区切られたカットですか?

次の形式のテキストを含むファイルがあります:

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[^\\]

関連情報