0

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

4

1 に答える 1