diff --git a/Lib/shlex.py b/Lib/shlex.py
index 05e3fbd..69f3b45 100644
--- a/Lib/shlex.py
+++ b/Lib/shlex.py
@@ -45,7 +45,6 @@
         self.state = ' '
         self.pushback = deque()
         self.lineno = 1
-        self._lines_found = 0
         self.debug = 0
         self.token = ''
         self.filestack = deque()
@@ -116,23 +115,12 @@
         return raw
 
     def read_token(self):
-        if self._lines_found:
-            self.lineno += self._lines_found
-            self._lines_found = 0
-
-        i = 0
         quoted = False
         escapedstate = ' '
         while True:
-            i += 1
             nextchar = self.instream.read(1)
             if nextchar == '\n':
-                # In case newline is the first character increment lineno
-                if i == 1:
-                    self.lineno += 1
-                else:
-                    self._lines_found += 1
-
+                self.lineno = self.lineno + 1
             if self.debug >= 3:
                 print("shlex: in state", repr(self.state), \
                       "I see character:", repr(nextchar))
@@ -152,7 +140,6 @@
                         continue
                 elif nextchar in self.commenters:
                     self.instream.readline()
-                    # Not considered a token so incrementing lineno directly
                     self.lineno = self.lineno + 1
                 elif self.posix and nextchar in self.escape:
                     escapedstate = 'a'
@@ -220,7 +207,6 @@
                         continue
                 elif nextchar in self.commenters:
                     self.instream.readline()
-                    # Not considered a token so incrementing lineno directly
                     self.lineno = self.lineno + 1
                     if self.posix:
                         self.state = ' '
diff --git a/Lib/test/test_shlex.py b/Lib/test/test_shlex.py
index 5f7b68f..d2809ae 100644
--- a/Lib/test/test_shlex.py
+++ b/Lib/test/test_shlex.py
@@ -189,15 +189,6 @@
             self.assertEqual(shlex.quote("test%s'name'" % u),
                              "'test%s'\"'\"'name'\"'\"''" % u)
 
-    def testLineNumbers(self):
-        data = '"a \n b \n c"\n"x"\n"y"'
-        for is_posix in (True, False):
-            s = shlex.shlex(data, posix=is_posix)
-            for i in (1, 4, 5):
-                s.read_token()
-                self.assertEqual(s.lineno, i)
-
-
 # Allow this test to be used with old shlex.py
 if not getattr(shlex, "split", None):
     for methname in dir(ShlexTest):
diff --git a/Misc/ACKS b/Misc/ACKS
index 6c04a0c..f88d95c 100644
--- a/Misc/ACKS
+++ b/Misc/ACKS
@@ -855,7 +855,6 @@
 Gustavo Niemeyer
 Oscar Nierstrasz
 Hrvoje Niksic
-Birk Nilson
 Gregory Nofi
 Jesse Noller
 Bill Noon
diff --git a/Misc/NEWS b/Misc/NEWS
index 7e4a5fa..258c549 100644
--- a/Misc/NEWS
+++ b/Misc/NEWS
@@ -181,9 +181,6 @@
 Library
 -------
 
-- Issue #16121: Fix line number accounting in shlex. Patch by Birk
-  Nilson.
-
 - Issue #14720: sqlite3: Convert datetime microseconds correctly.
   Patch by Lowe Thiderman.
 
