Programming Question with WaitForSeconds

Trying to get this to work but in my Debug.Log all I see is This is printed immediately, why am i not seeing the stuff in the Do() function?

Thanks.

IEnumerator Do() {
    print("Do now");
    yield return new WaitForSeconds(2);
    print("Do 2 seconds later");
}
public void Awake() {
    Do();
    print("This is printed immediately");
}

This should be what you are looking for:-

    void Awake()
{
    StartCoroutine(Do());
}

IEnumerator Do() {
    Debug.Log("This will show instantly");
    yield return new WaitForSeconds(2);
    Debug.Log("This will print after 2 seconds");
}

You need to use StartCoroutine(Do()); to call the function