sed で文字クラスの逆を表す方法が見つかりません。これが perl ライクな環境である場合、[^\s] を使用します。ただし、sed では、これは非空白ではなく非 s に一致するように見えます。
テキスト行 (gdrive から) で、空白以外の最初のトークンをキャプチャし、行の最初の空白より後 (および空白を含む) をすべて無視する必要があります。
これは、私が解析しようとしている入力の偽の代表的な例です。
19845fake-FaKeE-xbk534sWsbBQ mydir dir 2019-01-01 19:10:44
これを行う最初の試みは次の行でした:
sed -rn 's/^([^\s]*).*$/\1/p'
最初は、これが最初の空白ではなく最初の「s」で途切れていることに気付くまで、うまくいくように見えました。
それ以来、次のようなさまざまな順列を試みました。
#matches up to the first 's'
sed -rn 's/([^\\s]*).*$/\1/p'
#matches only the first character
sed -rn 's/^([^[[:blank:]]]*).*$/\1/p'
#matches nothing at all
sed -rn 's/^([[^:blank:]]*).*$/\1/p'
sed -rn 's/^\s*([^\s]*).*$/\1/p'
予想: 19845fake-FakeE-xbk534sWsbBQ
実際: 19845fake-FakeE-xbk534