cutコマンドの区切り文字引数は常に文字列の間にあると思いますか?

cutコマンドの区切り文字引数は常に文字列の間にあると思いますか?

今日、私はcutコマンドで長く使用して使用していたにもかかわらず、以前はまったく気づいていなかったことを発見しました。

/users/developer/文字列から抽出したいですusers。だから私がしたことは、

echo `pwd` | cut -d '/' -f1

これは私に何の答えも持っていませんでした。私の仮定は区切り文字として指定したので、/区切り文字を見つけた後に最初のフィールドを返す必要があるということです。

少し調整した後、検索コマンドを変更すると、目的の出力が得られることに気づきました。f2

echo `pwd` | cut -d '/' -f2

これにより、区切り記号が常に期待されると思いました。が左側にあるため、最初のフィールドを検索しようとすると何も返されませんが、2番目のフィールドを検索しようとすると予想される結果が得られます。

論理的にこれはdelimiter。私はこれがcutコマンドの区切り文字パラメータが実際にどのように機能するのか疑問に思います。言い換えれば、私の推論は正しいですか(対応する区切り文字は常に区切り文字の左側に何かを期待しています)

ベストアンサー1

f1以前のfirstと同様に空です /

 echo "/some/path/to/some/location" | cut -d '/' -f1
      |
      +--- empty

f1echo "firstとfirstの間の内容です/


つまり、空虚は存在しません。または、文字列/フィールドになどの文字を含めることはできません""

たとえば、次のような内容を見ると、より明確になります。

[In Data]   [Output fields]
             1  2  3  4  5 -f
A:B::D:E  => A, B,  , D, E
A::C:D:E  => A,  , C, D, E
:B:C:D:   =>  , B, C, D, 

左、〜サイまたは右 - 空または空ではありません。フィールドはフィールドです。

おすすめ記事