How to delete line if longer than XY?

The name of the pictureThe name of the pictureThe name of the pictureClash Royale CLAN TAG#URR8PPP

up vote
17
down vote

favorite

2

How can i delete a line if it is longer than e.g.: 2048 chars?

share|improve this question

  • Do you insist on using sed? This is easy, for example in python. And no doubt even easier in perl. Though the question is not terribly well defined. Copy a file, removing all lines longer than 2048, or something else?
    – Faheem Mitha
    Mar 23 ’11 at 18:21

up vote
17
down vote

favorite

2

How can i delete a line if it is longer than e.g.: 2048 chars?

share|improve this question

  • Do you insist on using sed? This is easy, for example in python. And no doubt even easier in perl. Though the question is not terribly well defined. Copy a file, removing all lines longer than 2048, or something else?
    – Faheem Mitha
    Mar 23 ’11 at 18:21

up vote
17
down vote

favorite

2

up vote
17
down vote

favorite

2
2

How can i delete a line if it is longer than e.g.: 2048 chars?

share|improve this question

How can i delete a line if it is longer than e.g.: 2048 chars?

sed

share|improve this question

share|improve this question

share|improve this question

share|improve this question

edited Jan 29 ’14 at 17:27

jlliagre

46.2k783132

46.2k783132

asked Mar 23 ’11 at 18:09

LanceBaynes

10.2k75192322

10.2k75192322

  • Do you insist on using sed? This is easy, for example in python. And no doubt even easier in perl. Though the question is not terribly well defined. Copy a file, removing all lines longer than 2048, or something else?
    – Faheem Mitha
    Mar 23 ’11 at 18:21

  • Do you insist on using sed? This is easy, for example in python. And no doubt even easier in perl. Though the question is not terribly well defined. Copy a file, removing all lines longer than 2048, or something else?
    – Faheem Mitha
    Mar 23 ’11 at 18:21

Do you insist on using sed? This is easy, for example in python. And no doubt even easier in perl. Though the question is not terribly well defined. Copy a file, removing all lines longer than 2048, or something else?
– Faheem Mitha
Mar 23 ’11 at 18:21

Do you insist on using sed? This is easy, for example in python. And no doubt even easier in perl. Though the question is not terribly well defined. Copy a file, removing all lines longer than 2048, or something else?
– Faheem Mitha
Mar 23 ’11 at 18:21

6 Answers
6

active

oldest

votes

up vote
19
down vote

accepted

sed '/^.{2048}./d' input.txt > output.txt

share|improve this answer

  • 2

    I get the error message sed: 1: "/^.{2048}..*/d": RE error: invalid repetition count(s) (Mac OS X)
    – wedi
    Oct 13 ’14 at 15:47

  • 1

    @wedi you probably want to install the GNU version instead of the BSD version that ships with Mac. This is easy with brew
    – Freedom_Ben
    Jul 6 ’16 at 0:00

up vote
6
down vote

Here’s a solution which deletes lines that has 2049 or more characters:

sed -E '/^.{2049}/d' <file.in >file.out

Strictly speaking, the ^ anchor is not needed.

With awk, printing lines of length 2048 or shorter:

awk 'length <= 2048' <file.in >file.out

share|improve this answer

  • 1

    I get the error message sed: 1: "/^.{400,}$/d": RE error: invalid repetition count(s) (Mac OS X)
    – wedi
    Oct 13 ’14 at 15:47

  • 1

    @wedi Now updated and tested on macOS Mojave.
    – Kusalananda
    Nov 29 at 23:20

up vote
2
down vote

Something like this should work in Python.

of = open("orig")
nf = open("new",'w')
for line in of:         
    if len(line) < 2048:
        nf.write(line)
of.close()
nf.close()

share|improve this answer

  • 1

    Personally, @Faheem, I prefer your answer. The reason why is that it was very easy for me to turn it around into ‘delete all lines smaller than x’. I don’t use Python all the time, but when I do I always feel I should learn it well.
    – ixtmixilix
    May 22 ’11 at 18:18

  • @ixtmixilix: Yes, using a full featured language like Python is pretty flexible. Thanks for the comment.
    – Faheem Mitha
    May 24 ’11 at 16:46

up vote
1
down vote

perl -lne "length < 2048 && print" infile > outfile

share|improve this answer

  • +1 The -l isn’t needed, though.
    – Joseph R.
    Jan 29 ’14 at 17:22

  • Does not work for me. Perl v5.16.2. Warning: Use of "length" without parentheses is ambiguous at -e line 1. Unterminated <> operator at -e line 1.
    – wedi
    Oct 13 ’14 at 15:51

  • You may try length($_) > 2048 && print. length is a shortcut for length($_) anyway.
    – MaratC
    Nov 17 ’14 at 12:10

up vote
0
down vote

The above answers do not work for me on Mac OS X 10.9.5.

The following code does work:

sed '/.{2048}/d'.

Although not asked, but provided for reference, the reverse can be achieved the following code:

sed '/.{2048}/!d'.

share|improve this answer

  • lol, but sed: 1: "/.{2048}/d": RE error: invalid repetition count(s) (Mac OS X, 10.10.4)
    – alex gray
    Jul 24 ’15 at 13:29

  • Ah. I installed the GNU version instead of the BSD version that ships with Mac as @Freedom_Ben suggested above. But Kusalananda found the switch to enable extended regex. So you should go with his solution if you still have that problem. 😉
    – wedi
    Nov 30 at 19:40

up vote
0
down vote

With gnu-sed, you may use the -r flag, to avoid typing the backslashes, and a comma, to define an open interval:

sed -r  "/.{2049,}/d" input.txt > output.txt

with:

  • x{2049} meaning exactly 2049 xs
  • x{2049,3072} meaning from 2049 to 3072 xs
  • x{2049,} meaning at least 2049 xs
  • x{,2049} meaning at most 2049 xs

For the intervals, to not match bigger patterns, you would need line anchors like

sed -r  "/^.{32,64}$/d" input.txt > output.txt 

share|improve this answer

    Your Answer

    StackExchange.ready(function() {
    var channelOptions = {
    tags: “”.split(” “),
    id: “106”
    };
    initTagRenderer(“”.split(” “), “”.split(” “), channelOptions);

    StackExchange.using(“externalEditor”, function() {
    // Have to fire editor after snippets, if snippets enabled
    if (StackExchange.settings.snippets.snippetsEnabled) {
    StackExchange.using(“snippets”, function() {
    createEditor();
    });
    }
    else {
    createEditor();
    }
    });

    function createEditor() {
    StackExchange.prepareEditor({
    heartbeatType: ‘answer’,
    convertImagesToLinks: false,
    noModals: true,
    showLowRepImageUploadWarning: true,
    reputationToPostImages: null,
    bindNavPrevention: true,
    postfix: “”,
    imageUploader: {
    brandingHtml: “Powered by u003ca class=”icon-imgur-white” href=”https://imgur.com/”u003eu003c/au003e”,
    contentPolicyHtml: “User contributions licensed under u003ca href=”https://creativecommons.org/licenses/by-sa/3.0/”u003ecc by-sa 3.0 with attribution requiredu003c/au003e u003ca href=”https://stackoverflow.com/legal/content-policy”u003e(content policy)u003c/au003e”,
    allowUrls: true
    },
    onDemand: true,
    discardSelector: “.discard-answer”
    ,immediatelyShowMarkdownHelp:true
    });

    }
    });

    draft saved
    draft discarded

    StackExchange.ready(
    function () {
    StackExchange.openid.initPostLogin(‘.new-post-login’, ‘https%3a%2f%2funix.stackexchange.com%2fquestions%2f9981%2fhow-to-delete-line-if-longer-than-xy%23new-answer’, ‘question_page’);
    }
    );

    Post as a guest

    Required, but never shown

    6 Answers
    6

    active

    oldest

    votes

    6 Answers
    6

    active

    oldest

    votes

    active

    oldest

    votes

    active

    oldest

    votes

    up vote
    19
    down vote

    accepted

    sed '/^.{2048}./d' input.txt > output.txt
    

    share|improve this answer

    • 2

      I get the error message sed: 1: "/^.{2048}..*/d": RE error: invalid repetition count(s) (Mac OS X)
      – wedi
      Oct 13 ’14 at 15:47

    • 1

      @wedi you probably want to install the GNU version instead of the BSD version that ships with Mac. This is easy with brew
      – Freedom_Ben
      Jul 6 ’16 at 0:00

    up vote
    19
    down vote

    accepted

    sed '/^.{2048}./d' input.txt > output.txt
    

    share|improve this answer

    • 2

      I get the error message sed: 1: "/^.{2048}..*/d": RE error: invalid repetition count(s) (Mac OS X)
      – wedi
      Oct 13 ’14 at 15:47

    • 1

      @wedi you probably want to install the GNU version instead of the BSD version that ships with Mac. This is easy with brew
      – Freedom_Ben
      Jul 6 ’16 at 0:00

    up vote
    19
    down vote

    accepted

    up vote
    19
    down vote

    accepted

    sed '/^.{2048}./d' input.txt > output.txt
    

    share|improve this answer

    sed '/^.{2048}./d' input.txt > output.txt
    

    share|improve this answer

    share|improve this answer

    share|improve this answer

    edited Nov 1 ’16 at 0:43

    Wildcard

    22.5k960164

    22.5k960164

    answered Mar 23 ’11 at 18:26

    forcefsck

    5,6161931

    5,6161931

    • 2

      I get the error message sed: 1: "/^.{2048}..*/d": RE error: invalid repetition count(s) (Mac OS X)
      – wedi
      Oct 13 ’14 at 15:47

    • 1

      @wedi you probably want to install the GNU version instead of the BSD version that ships with Mac. This is easy with brew
      – Freedom_Ben
      Jul 6 ’16 at 0:00

    • 2

      I get the error message sed: 1: "/^.{2048}..*/d": RE error: invalid repetition count(s) (Mac OS X)
      – wedi
      Oct 13 ’14 at 15:47

    • 1

      @wedi you probably want to install the GNU version instead of the BSD version that ships with Mac. This is easy with brew
      – Freedom_Ben
      Jul 6 ’16 at 0:00

    2

    2

    I get the error message sed: 1: "/^.{2048}..*/d": RE error: invalid repetition count(s) (Mac OS X)
    – wedi
    Oct 13 ’14 at 15:47

    I get the error message sed: 1: "/^.{2048}..*/d": RE error: invalid repetition count(s) (Mac OS X)
    – wedi
    Oct 13 ’14 at 15:47

    1

    1

    @wedi you probably want to install the GNU version instead of the BSD version that ships with Mac. This is easy with brew
    – Freedom_Ben
    Jul 6 ’16 at 0:00

    @wedi you probably want to install the GNU version instead of the BSD version that ships with Mac. This is easy with brew
    – Freedom_Ben
    Jul 6 ’16 at 0:00

    up vote
    6
    down vote

    Here’s a solution which deletes lines that has 2049 or more characters:

    sed -E '/^.{2049}/d' <file.in >file.out
    

    Strictly speaking, the ^ anchor is not needed.

    With awk, printing lines of length 2048 or shorter:

    awk 'length <= 2048' <file.in >file.out
    

    share|improve this answer

    • 1

      I get the error message sed: 1: "/^.{400,}$/d": RE error: invalid repetition count(s) (Mac OS X)
      – wedi
      Oct 13 ’14 at 15:47

    • 1

      @wedi Now updated and tested on macOS Mojave.
      – Kusalananda
      Nov 29 at 23:20

    up vote
    6
    down vote

    Here’s a solution which deletes lines that has 2049 or more characters:

    sed -E '/^.{2049}/d' <file.in >file.out
    

    Strictly speaking, the ^ anchor is not needed.

    With awk, printing lines of length 2048 or shorter:

    awk 'length <= 2048' <file.in >file.out
    

    share|improve this answer

    • 1

      I get the error message sed: 1: "/^.{400,}$/d": RE error: invalid repetition count(s) (Mac OS X)
      – wedi
      Oct 13 ’14 at 15:47

    • 1

      @wedi Now updated and tested on macOS Mojave.
      – Kusalananda
      Nov 29 at 23:20

    up vote
    6
    down vote

    up vote
    6
    down vote

    Here’s a solution which deletes lines that has 2049 or more characters:

    sed -E '/^.{2049}/d' <file.in >file.out
    

    Strictly speaking, the ^ anchor is not needed.

    With awk, printing lines of length 2048 or shorter:

    awk 'length <= 2048' <file.in >file.out
    

    share|improve this answer

    Here’s a solution which deletes lines that has 2049 or more characters:

    sed -E '/^.{2049}/d' <file.in >file.out
    

    Strictly speaking, the ^ anchor is not needed.

    With awk, printing lines of length 2048 or shorter:

    awk 'length <= 2048' <file.in >file.out
    

    share|improve this answer

    share|improve this answer

    share|improve this answer

    edited Nov 29 at 23:19

    answered Sep 7 ’11 at 10:13

    Kusalananda

    119k16223364

    119k16223364

    • 1

      I get the error message sed: 1: "/^.{400,}$/d": RE error: invalid repetition count(s) (Mac OS X)
      – wedi
      Oct 13 ’14 at 15:47

    • 1

      @wedi Now updated and tested on macOS Mojave.
      – Kusalananda
      Nov 29 at 23:20

    • 1

      I get the error message sed: 1: "/^.{400,}$/d": RE error: invalid repetition count(s) (Mac OS X)
      – wedi
      Oct 13 ’14 at 15:47

    • 1

      @wedi Now updated and tested on macOS Mojave.
      – Kusalananda
      Nov 29 at 23:20

    1

    1

    I get the error message sed: 1: "/^.{400,}$/d": RE error: invalid repetition count(s) (Mac OS X)
    – wedi
    Oct 13 ’14 at 15:47

    I get the error message sed: 1: "/^.{400,}$/d": RE error: invalid repetition count(s) (Mac OS X)
    – wedi
    Oct 13 ’14 at 15:47

    1

    1

    @wedi Now updated and tested on macOS Mojave.
    – Kusalananda
    Nov 29 at 23:20

    @wedi Now updated and tested on macOS Mojave.
    – Kusalananda
    Nov 29 at 23:20

    up vote
    2
    down vote

    Something like this should work in Python.

    of = open("orig")
    nf = open("new",'w')
    for line in of:         
        if len(line) < 2048:
            nf.write(line)
    of.close()
    nf.close()
    

    share|improve this answer

    • 1

      Personally, @Faheem, I prefer your answer. The reason why is that it was very easy for me to turn it around into ‘delete all lines smaller than x’. I don’t use Python all the time, but when I do I always feel I should learn it well.
      – ixtmixilix
      May 22 ’11 at 18:18

    • @ixtmixilix: Yes, using a full featured language like Python is pretty flexible. Thanks for the comment.
      – Faheem Mitha
      May 24 ’11 at 16:46

    up vote
    2
    down vote

    Something like this should work in Python.

    of = open("orig")
    nf = open("new",'w')
    for line in of:         
        if len(line) < 2048:
            nf.write(line)
    of.close()
    nf.close()
    

    share|improve this answer

    • 1

      Personally, @Faheem, I prefer your answer. The reason why is that it was very easy for me to turn it around into ‘delete all lines smaller than x’. I don’t use Python all the time, but when I do I always feel I should learn it well.
      – ixtmixilix
      May 22 ’11 at 18:18

    • @ixtmixilix: Yes, using a full featured language like Python is pretty flexible. Thanks for the comment.
      – Faheem Mitha
      May 24 ’11 at 16:46

    up vote
    2
    down vote

    up vote
    2
    down vote

    Something like this should work in Python.

    of = open("orig")
    nf = open("new",'w')
    for line in of:         
        if len(line) < 2048:
            nf.write(line)
    of.close()
    nf.close()
    

    share|improve this answer

    Something like this should work in Python.

    of = open("orig")
    nf = open("new",'w')
    for line in of:         
        if len(line) < 2048:
            nf.write(line)
    of.close()
    nf.close()
    

    share|improve this answer

    share|improve this answer

    share|improve this answer

    answered Mar 23 ’11 at 18:33

    Faheem Mitha

    22.6k1879134

    22.6k1879134

    • 1

      Personally, @Faheem, I prefer your answer. The reason why is that it was very easy for me to turn it around into ‘delete all lines smaller than x’. I don’t use Python all the time, but when I do I always feel I should learn it well.
      – ixtmixilix
      May 22 ’11 at 18:18

    • @ixtmixilix: Yes, using a full featured language like Python is pretty flexible. Thanks for the comment.
      – Faheem Mitha
      May 24 ’11 at 16:46

    • 1

      Personally, @Faheem, I prefer your answer. The reason why is that it was very easy for me to turn it around into ‘delete all lines smaller than x’. I don’t use Python all the time, but when I do I always feel I should learn it well.
      – ixtmixilix
      May 22 ’11 at 18:18

    • @ixtmixilix: Yes, using a full featured language like Python is pretty flexible. Thanks for the comment.
      – Faheem Mitha
      May 24 ’11 at 16:46

    1

    1

    Personally, @Faheem, I prefer your answer. The reason why is that it was very easy for me to turn it around into ‘delete all lines smaller than x’. I don’t use Python all the time, but when I do I always feel I should learn it well.
    – ixtmixilix
    May 22 ’11 at 18:18

    Personally, @Faheem, I prefer your answer. The reason why is that it was very easy for me to turn it around into ‘delete all lines smaller than x’. I don’t use Python all the time, but when I do I always feel I should learn it well.
    – ixtmixilix
    May 22 ’11 at 18:18

    @ixtmixilix: Yes, using a full featured language like Python is pretty flexible. Thanks for the comment.
    – Faheem Mitha
    May 24 ’11 at 16:46

    @ixtmixilix: Yes, using a full featured language like Python is pretty flexible. Thanks for the comment.
    – Faheem Mitha
    May 24 ’11 at 16:46

    up vote
    1
    down vote

    perl -lne "length < 2048 && print" infile > outfile
    

    share|improve this answer

    • +1 The -l isn’t needed, though.
      – Joseph R.
      Jan 29 ’14 at 17:22

    • Does not work for me. Perl v5.16.2. Warning: Use of "length" without parentheses is ambiguous at -e line 1. Unterminated <> operator at -e line 1.
      – wedi
      Oct 13 ’14 at 15:51

    • You may try length($_) > 2048 && print. length is a shortcut for length($_) anyway.
      – MaratC
      Nov 17 ’14 at 12:10

    up vote
    1
    down vote

    perl -lne "length < 2048 && print" infile > outfile
    

    share|improve this answer

    • +1 The -l isn’t needed, though.
      – Joseph R.
      Jan 29 ’14 at 17:22

    • Does not work for me. Perl v5.16.2. Warning: Use of "length" without parentheses is ambiguous at -e line 1. Unterminated <> operator at -e line 1.
      – wedi
      Oct 13 ’14 at 15:51

    • You may try length($_) > 2048 && print. length is a shortcut for length($_) anyway.
      – MaratC
      Nov 17 ’14 at 12:10

    up vote
    1
    down vote

    up vote
    1
    down vote

    perl -lne "length < 2048 && print" infile > outfile
    

    share|improve this answer

    perl -lne "length < 2048 && print" infile > outfile
    

    share|improve this answer

    share|improve this answer

    share|improve this answer

    answered Jan 29 ’14 at 17:14

    MaratC

    1111

    1111

    • +1 The -l isn’t needed, though.
      – Joseph R.
      Jan 29 ’14 at 17:22

    • Does not work for me. Perl v5.16.2. Warning: Use of "length" without parentheses is ambiguous at -e line 1. Unterminated <> operator at -e line 1.
      – wedi
      Oct 13 ’14 at 15:51

    • You may try length($_) > 2048 && print. length is a shortcut for length($_) anyway.
      – MaratC
      Nov 17 ’14 at 12:10

    • +1 The -l isn’t needed, though.
      – Joseph R.
      Jan 29 ’14 at 17:22

    • Does not work for me. Perl v5.16.2. Warning: Use of "length" without parentheses is ambiguous at -e line 1. Unterminated <> operator at -e line 1.
      – wedi
      Oct 13 ’14 at 15:51

    • You may try length($_) > 2048 && print. length is a shortcut for length($_) anyway.
      – MaratC
      Nov 17 ’14 at 12:10

    +1 The -l isn’t needed, though.
    – Joseph R.
    Jan 29 ’14 at 17:22

    +1 The -l isn’t needed, though.
    – Joseph R.
    Jan 29 ’14 at 17:22

    Does not work for me. Perl v5.16.2. Warning: Use of "length" without parentheses is ambiguous at -e line 1. Unterminated <> operator at -e line 1.
    – wedi
    Oct 13 ’14 at 15:51

    Does not work for me. Perl v5.16.2. Warning: Use of "length" without parentheses is ambiguous at -e line 1. Unterminated <> operator at -e line 1.
    – wedi
    Oct 13 ’14 at 15:51

    You may try length($_) > 2048 && print. length is a shortcut for length($_) anyway.
    – MaratC
    Nov 17 ’14 at 12:10

    You may try length($_) > 2048 && print. length is a shortcut for length($_) anyway.
    – MaratC
    Nov 17 ’14 at 12:10

    up vote
    0
    down vote

    The above answers do not work for me on Mac OS X 10.9.5.

    The following code does work:

    sed '/.{2048}/d'.

    Although not asked, but provided for reference, the reverse can be achieved the following code:

    sed '/.{2048}/!d'.

    share|improve this answer

    • lol, but sed: 1: "/.{2048}/d": RE error: invalid repetition count(s) (Mac OS X, 10.10.4)
      – alex gray
      Jul 24 ’15 at 13:29

    • Ah. I installed the GNU version instead of the BSD version that ships with Mac as @Freedom_Ben suggested above. But Kusalananda found the switch to enable extended regex. So you should go with his solution if you still have that problem. 😉
      – wedi
      Nov 30 at 19:40

    up vote
    0
    down vote

    The above answers do not work for me on Mac OS X 10.9.5.

    The following code does work:

    sed '/.{2048}/d'.

    Although not asked, but provided for reference, the reverse can be achieved the following code:

    sed '/.{2048}/!d'.

    share|improve this answer

    • lol, but sed: 1: "/.{2048}/d": RE error: invalid repetition count(s) (Mac OS X, 10.10.4)
      – alex gray
      Jul 24 ’15 at 13:29

    • Ah. I installed the GNU version instead of the BSD version that ships with Mac as @Freedom_Ben suggested above. But Kusalananda found the switch to enable extended regex. So you should go with his solution if you still have that problem. 😉
      – wedi
      Nov 30 at 19:40

    up vote
    0
    down vote

    up vote
    0
    down vote

    The above answers do not work for me on Mac OS X 10.9.5.

    The following code does work:

    sed '/.{2048}/d'.

    Although not asked, but provided for reference, the reverse can be achieved the following code:

    sed '/.{2048}/!d'.

    share|improve this answer

    The above answers do not work for me on Mac OS X 10.9.5.

    The following code does work:

    sed '/.{2048}/d'.

    Although not asked, but provided for reference, the reverse can be achieved the following code:

    sed '/.{2048}/!d'.

    share|improve this answer

    share|improve this answer

    share|improve this answer

    edited Sep 15 ’16 at 21:28

    DomainsFeatured

    1348

    1348

    answered Oct 13 ’14 at 16:02

    wedi

    1012

    1012

    • lol, but sed: 1: "/.{2048}/d": RE error: invalid repetition count(s) (Mac OS X, 10.10.4)
      – alex gray
      Jul 24 ’15 at 13:29

    • Ah. I installed the GNU version instead of the BSD version that ships with Mac as @Freedom_Ben suggested above. But Kusalananda found the switch to enable extended regex. So you should go with his solution if you still have that problem. 😉
      – wedi
      Nov 30 at 19:40

    • lol, but sed: 1: "/.{2048}/d": RE error: invalid repetition count(s) (Mac OS X, 10.10.4)
      – alex gray
      Jul 24 ’15 at 13:29

    • Ah. I installed the GNU version instead of the BSD version that ships with Mac as @Freedom_Ben suggested above. But Kusalananda found the switch to enable extended regex. So you should go with his solution if you still have that problem. 😉
      – wedi
      Nov 30 at 19:40

    lol, but sed: 1: "/.{2048}/d": RE error: invalid repetition count(s) (Mac OS X, 10.10.4)
    – alex gray
    Jul 24 ’15 at 13:29

    lol, but sed: 1: "/.{2048}/d": RE error: invalid repetition count(s) (Mac OS X, 10.10.4)
    – alex gray
    Jul 24 ’15 at 13:29

    Ah. I installed the GNU version instead of the BSD version that ships with Mac as @Freedom_Ben suggested above. But Kusalananda found the switch to enable extended regex. So you should go with his solution if you still have that problem. 😉
    – wedi
    Nov 30 at 19:40

    Ah. I installed the GNU version instead of the BSD version that ships with Mac as @Freedom_Ben suggested above. But Kusalananda found the switch to enable extended regex. So you should go with his solution if you still have that problem. 😉
    – wedi
    Nov 30 at 19:40

    up vote
    0
    down vote

    With gnu-sed, you may use the -r flag, to avoid typing the backslashes, and a comma, to define an open interval:

    sed -r  "/.{2049,}/d" input.txt > output.txt
    

    with:

    • x{2049} meaning exactly 2049 xs
    • x{2049,3072} meaning from 2049 to 3072 xs
    • x{2049,} meaning at least 2049 xs
    • x{,2049} meaning at most 2049 xs

    For the intervals, to not match bigger patterns, you would need line anchors like

    sed -r  "/^.{32,64}$/d" input.txt > output.txt 
    

    share|improve this answer

      up vote
      0
      down vote

      With gnu-sed, you may use the -r flag, to avoid typing the backslashes, and a comma, to define an open interval:

      sed -r  "/.{2049,}/d" input.txt > output.txt
      

      with:

      • x{2049} meaning exactly 2049 xs
      • x{2049,3072} meaning from 2049 to 3072 xs
      • x{2049,} meaning at least 2049 xs
      • x{,2049} meaning at most 2049 xs

      For the intervals, to not match bigger patterns, you would need line anchors like

      sed -r  "/^.{32,64}$/d" input.txt > output.txt 
      

      share|improve this answer

        up vote
        0
        down vote

        up vote
        0
        down vote

        With gnu-sed, you may use the -r flag, to avoid typing the backslashes, and a comma, to define an open interval:

        sed -r  "/.{2049,}/d" input.txt > output.txt
        

        with:

        • x{2049} meaning exactly 2049 xs
        • x{2049,3072} meaning from 2049 to 3072 xs
        • x{2049,} meaning at least 2049 xs
        • x{,2049} meaning at most 2049 xs

        For the intervals, to not match bigger patterns, you would need line anchors like

        sed -r  "/^.{32,64}$/d" input.txt > output.txt 
        

        share|improve this answer

        With gnu-sed, you may use the -r flag, to avoid typing the backslashes, and a comma, to define an open interval:

        sed -r  "/.{2049,}/d" input.txt > output.txt
        

        with:

        • x{2049} meaning exactly 2049 xs
        • x{2049,3072} meaning from 2049 to 3072 xs
        • x{2049,} meaning at least 2049 xs
        • x{,2049} meaning at most 2049 xs

        For the intervals, to not match bigger patterns, you would need line anchors like

        sed -r  "/^.{32,64}$/d" input.txt > output.txt 
        

        share|improve this answer

        share|improve this answer

        share|improve this answer

        answered Nov 30 at 0:17

        user unknown

        7,20812148

        7,20812148

            draft saved
            draft discarded

            Thanks for contributing an answer to Unix & Linux Stack Exchange!

            • Please be sure to answer the question. Provide details and share your research!

            But avoid

            • Asking for help, clarification, or responding to other answers.
            • Making statements based on opinion; back them up with references or personal experience.

            To learn more, see our tips on writing great answers.

            Some of your past answers have not been well-received, and you’re in danger of being blocked from answering.

            Please pay close attention to the following guidance:

            • Please be sure to answer the question. Provide details and share your research!

            But avoid

            • Asking for help, clarification, or responding to other answers.
            • Making statements based on opinion; back them up with references or personal experience.

            To learn more, see our tips on writing great answers.

            draft saved

            draft discarded

            StackExchange.ready(
            function () {
            StackExchange.openid.initPostLogin(‘.new-post-login’, ‘https%3a%2f%2funix.stackexchange.com%2fquestions%2f9981%2fhow-to-delete-line-if-longer-than-xy%23new-answer’, ‘question_page’);
            }
            );

            Post as a guest

            Required, but never shown

            Required, but never shown

            Required, but never shown

            Required, but never shown

            Required, but never shown

            Required, but never shown

            Required, but never shown

            Required, but never shown

            Required, but never shown

            Related Post

            Leave a Reply

            Your email address will not be published. Required fields are marked *