Remove special characters at end of row in unix file

Multi tool use
Multi tool use

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











up vote
0
down vote

favorite












I have a csv file which has a delimiter ~@~~@~ and sometimes ~@~. Same set of special characters ~@~~@~(I dont know how many but ~@~~@~*) appear at end of row which is a date field. So data in file is like



ABC~@~~@~TUV~@~~@~XYZ~@~PQR~@~13470~@~Management~@~Non-Employee IJK~@~T~@~12345~@~12345~@~abc@gmail.com~@~B~@~~@~~@~~@~6789~@~09/25/2017 11:31:22.000000~@~09/25/2017 3:22:03.000000~@~~@~~@~~@~~@~~@~~@~~@~~@~~@~~@~~@~~@~~@~~@~~@~~@~~@~~@~~@~~@~~@~~@~~@~~@~~@~~@~~@~~@~~@~~@~~@~~@~~@~~@~~@~~@~~@~~@~~@~~@~~@~~@~~@~~@~~@~~@~~@~~@~~@~~@~~@~~@~~@~~@~~@~~@~~@~~@~~@~~@~~@~~@~~@~~@~~@~~@~~@~~@~~@~~@~~@~~@~~@~~@~~@~~@~~@~~@~~@~~@~~@~~@~~@~~@~~@~~@~~@~~@~~@~~@~~@~~@~~@~~@~~@~~@~~@~~@~~@~~@~~@~~@~~@~~@~~@~~@~~@~~@~~@~~@~~@~~@~~@~~@~~@~~@~~@~~@~~@~~@~~@~~@~~@~~@~~@~~@~~@~~@~~@~~@~~@~~@~~@~~@~~@~~@~~@~~@~~@~~@~~@~~@~~@~~@~~@~~@~~@~~@~~@~~@~~@~~@~~@~~@~~@~~@~~@~~@~~@~~@~~@~~@~~@~~@~~@~~@~~@~~@~~@~~@~~@~~@~~@~~@~n


I need to remove the characters from Last Date field to End of line.
I have tried sed 's/~@~~@~~@~n*//g' File name>Replacedfilename.txt, but it retains one set of special characters at the end. Kindly provide your inputs







share|improve this question






















  • post the expected result
    – RomanPerekhrest
    Dec 14 '17 at 19:46






  • 2




    If it is a CSV file with a special delimiter, then it seems more plausible that ~@~~@~ is an empty column (similar to ,, in a CSV file with comma delimiters). If there are programs reading this file and you get rid of empty columns, are you sure that they are still going to work?
    – NickD
    Dec 14 '17 at 20:24














up vote
0
down vote

favorite












I have a csv file which has a delimiter ~@~~@~ and sometimes ~@~. Same set of special characters ~@~~@~(I dont know how many but ~@~~@~*) appear at end of row which is a date field. So data in file is like



ABC~@~~@~TUV~@~~@~XYZ~@~PQR~@~13470~@~Management~@~Non-Employee IJK~@~T~@~12345~@~12345~@~abc@gmail.com~@~B~@~~@~~@~~@~6789~@~09/25/2017 11:31:22.000000~@~09/25/2017 3:22:03.000000~@~~@~~@~~@~~@~~@~~@~~@~~@~~@~~@~~@~~@~~@~~@~~@~~@~~@~~@~~@~~@~~@~~@~~@~~@~~@~~@~~@~~@~~@~~@~~@~~@~~@~~@~~@~~@~~@~~@~~@~~@~~@~~@~~@~~@~~@~~@~~@~~@~~@~~@~~@~~@~~@~~@~~@~~@~~@~~@~~@~~@~~@~~@~~@~~@~~@~~@~~@~~@~~@~~@~~@~~@~~@~~@~~@~~@~~@~~@~~@~~@~~@~~@~~@~~@~~@~~@~~@~~@~~@~~@~~@~~@~~@~~@~~@~~@~~@~~@~~@~~@~~@~~@~~@~~@~~@~~@~~@~~@~~@~~@~~@~~@~~@~~@~~@~~@~~@~~@~~@~~@~~@~~@~~@~~@~~@~~@~~@~~@~~@~~@~~@~~@~~@~~@~~@~~@~~@~~@~~@~~@~~@~~@~~@~~@~~@~~@~~@~~@~~@~~@~~@~~@~~@~~@~~@~~@~~@~~@~~@~~@~~@~~@~~@~~@~~@~~@~~@~~@~~@~~@~~@~~@~~@~~@~n


I need to remove the characters from Last Date field to End of line.
I have tried sed 's/~@~~@~~@~n*//g' File name>Replacedfilename.txt, but it retains one set of special characters at the end. Kindly provide your inputs







share|improve this question






















  • post the expected result
    – RomanPerekhrest
    Dec 14 '17 at 19:46






  • 2




    If it is a CSV file with a special delimiter, then it seems more plausible that ~@~~@~ is an empty column (similar to ,, in a CSV file with comma delimiters). If there are programs reading this file and you get rid of empty columns, are you sure that they are still going to work?
    – NickD
    Dec 14 '17 at 20:24












up vote
0
down vote

favorite









up vote
0
down vote

favorite











I have a csv file which has a delimiter ~@~~@~ and sometimes ~@~. Same set of special characters ~@~~@~(I dont know how many but ~@~~@~*) appear at end of row which is a date field. So data in file is like



ABC~@~~@~TUV~@~~@~XYZ~@~PQR~@~13470~@~Management~@~Non-Employee IJK~@~T~@~12345~@~12345~@~abc@gmail.com~@~B~@~~@~~@~~@~6789~@~09/25/2017 11:31:22.000000~@~09/25/2017 3:22:03.000000~@~~@~~@~~@~~@~~@~~@~~@~~@~~@~~@~~@~~@~~@~~@~~@~~@~~@~~@~~@~~@~~@~~@~~@~~@~~@~~@~~@~~@~~@~~@~~@~~@~~@~~@~~@~~@~~@~~@~~@~~@~~@~~@~~@~~@~~@~~@~~@~~@~~@~~@~~@~~@~~@~~@~~@~~@~~@~~@~~@~~@~~@~~@~~@~~@~~@~~@~~@~~@~~@~~@~~@~~@~~@~~@~~@~~@~~@~~@~~@~~@~~@~~@~~@~~@~~@~~@~~@~~@~~@~~@~~@~~@~~@~~@~~@~~@~~@~~@~~@~~@~~@~~@~~@~~@~~@~~@~~@~~@~~@~~@~~@~~@~~@~~@~~@~~@~~@~~@~~@~~@~~@~~@~~@~~@~~@~~@~~@~~@~~@~~@~~@~~@~~@~~@~~@~~@~~@~~@~~@~~@~~@~~@~~@~~@~~@~~@~~@~~@~~@~~@~~@~~@~~@~~@~~@~~@~~@~~@~~@~~@~~@~~@~~@~~@~~@~~@~~@~~@~~@~~@~~@~~@~~@~~@~n


I need to remove the characters from Last Date field to End of line.
I have tried sed 's/~@~~@~~@~n*//g' File name>Replacedfilename.txt, but it retains one set of special characters at the end. Kindly provide your inputs







share|improve this question














I have a csv file which has a delimiter ~@~~@~ and sometimes ~@~. Same set of special characters ~@~~@~(I dont know how many but ~@~~@~*) appear at end of row which is a date field. So data in file is like



ABC~@~~@~TUV~@~~@~XYZ~@~PQR~@~13470~@~Management~@~Non-Employee IJK~@~T~@~12345~@~12345~@~abc@gmail.com~@~B~@~~@~~@~~@~6789~@~09/25/2017 11:31:22.000000~@~09/25/2017 3:22:03.000000~@~~@~~@~~@~~@~~@~~@~~@~~@~~@~~@~~@~~@~~@~~@~~@~~@~~@~~@~~@~~@~~@~~@~~@~~@~~@~~@~~@~~@~~@~~@~~@~~@~~@~~@~~@~~@~~@~~@~~@~~@~~@~~@~~@~~@~~@~~@~~@~~@~~@~~@~~@~~@~~@~~@~~@~~@~~@~~@~~@~~@~~@~~@~~@~~@~~@~~@~~@~~@~~@~~@~~@~~@~~@~~@~~@~~@~~@~~@~~@~~@~~@~~@~~@~~@~~@~~@~~@~~@~~@~~@~~@~~@~~@~~@~~@~~@~~@~~@~~@~~@~~@~~@~~@~~@~~@~~@~~@~~@~~@~~@~~@~~@~~@~~@~~@~~@~~@~~@~~@~~@~~@~~@~~@~~@~~@~~@~~@~~@~~@~~@~~@~~@~~@~~@~~@~~@~~@~~@~~@~~@~~@~~@~~@~~@~~@~~@~~@~~@~~@~~@~~@~~@~~@~~@~~@~~@~~@~~@~~@~~@~~@~~@~~@~~@~~@~~@~~@~~@~~@~~@~~@~~@~~@~~@~n


I need to remove the characters from Last Date field to End of line.
I have tried sed 's/~@~~@~~@~n*//g' File name>Replacedfilename.txt, but it retains one set of special characters at the end. Kindly provide your inputs









share|improve this question













share|improve this question




share|improve this question








edited Dec 14 '17 at 19:37









nwildner

13.2k14071




13.2k14071










asked Dec 14 '17 at 19:32









Manju

1




1











  • post the expected result
    – RomanPerekhrest
    Dec 14 '17 at 19:46






  • 2




    If it is a CSV file with a special delimiter, then it seems more plausible that ~@~~@~ is an empty column (similar to ,, in a CSV file with comma delimiters). If there are programs reading this file and you get rid of empty columns, are you sure that they are still going to work?
    – NickD
    Dec 14 '17 at 20:24
















  • post the expected result
    – RomanPerekhrest
    Dec 14 '17 at 19:46






  • 2




    If it is a CSV file with a special delimiter, then it seems more plausible that ~@~~@~ is an empty column (similar to ,, in a CSV file with comma delimiters). If there are programs reading this file and you get rid of empty columns, are you sure that they are still going to work?
    – NickD
    Dec 14 '17 at 20:24















post the expected result
– RomanPerekhrest
Dec 14 '17 at 19:46




post the expected result
– RomanPerekhrest
Dec 14 '17 at 19:46




2




2




If it is a CSV file with a special delimiter, then it seems more plausible that ~@~~@~ is an empty column (similar to ,, in a CSV file with comma delimiters). If there are programs reading this file and you get rid of empty columns, are you sure that they are still going to work?
– NickD
Dec 14 '17 at 20:24




If it is a CSV file with a special delimiter, then it seems more plausible that ~@~~@~ is an empty column (similar to ,, in a CSV file with comma delimiters). If there are programs reading this file and you get rid of empty columns, are you sure that they are still going to work?
– NickD
Dec 14 '17 at 20:24










3 Answers
3






active

oldest

votes

















up vote
3
down vote













... | sed 's/(~@~)*$//'


to remove any number of ~@~ at end of line (assuming of course that the n in your sample represents the line-ending newline, and not a literal backslash and lowercase N.)



or in seds that support -E for extended regular expressions:



... | sed -E 's/(~@~)+$//' 


or you could use awk -F'~@~' and handle the fields you need to at the same time.






share|improve this answer





























    up vote
    0
    down vote













    Assuming the above data is in file f1.txt.
    We can use the sed command and remove every occurrence of ~@~~@~ and ~@~.
    I've replaced it with a blank space.



    sed -e 's/~@~~@~/#/g;s/~@~/#/g;s/# */ /g' f1.txt > output.txt


    Result



    ABC TUV XYZ PQR 13470 Management Non-Employee IJK T 12345 12345 abc@gmail.com B 6789 09/25/2017 11:31:22.000000 09/25/2017 3:22:03.000000





    share|improve this answer



























      up vote
      -1
      down vote













      cat file |sed 's/~@~~@~~@~//g' |sed 's/~@~$//'


      the first sed remove the string ~@~~@~ and the second sed remove the last ~@~






      share|improve this answer






















      • it doesn't remove the ~@~ delimiters, the first sed removes the string ~@~~@~ and the second removes the ~@~ that remains at the end of the line
        – Emilio Galarraga
        Dec 14 '17 at 20:15










      • There's a pipe missing (although it would be better to get rid of the cat altogether). Also as @ilkkachu points out, you are getting rid of things in the middle of the line and you are only getting rid of a single delimiter at the end of the line.
        – NickD
        Dec 14 '17 at 20:20










      • Sorry, I mean it removes the ~@~~@~'s from the middle of the line, as in the beginning of the sample, here: ABC~@~~@~TUV. Not the single ~@~'s, of course.
        – ilkkachu
        Dec 14 '17 at 20:27











      • @Nick, at EOL, it works, since the first one removes all doubled ~@~'s, and the second removes the single one potentially left over at the end.
        – ilkkachu
        Dec 14 '17 at 20:27






      • 1




        @user3333911, well, that will still remove the ~@~'s in the middle, if some input happens to have two adjacent empty columns. That's not really a robust feature if the aim is to only remove the ones at the end of line. Now it will also leave one ~@~ in the end if their count is one less than a multiple of three (i.e. 3n + 2)
        – ilkkachu
        Dec 15 '17 at 11:39










      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: false,
      showLowRepImageUploadWarning: true,
      reputationToPostImages: null,
      bindNavPrevention: true,
      postfix: "",
      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%2f410934%2fremove-special-characters-at-end-of-row-in-unix-file%23new-answer', 'question_page');

      );

      Post as a guest






























      3 Answers
      3






      active

      oldest

      votes








      3 Answers
      3






      active

      oldest

      votes









      active

      oldest

      votes






      active

      oldest

      votes








      up vote
      3
      down vote













      ... | sed 's/(~@~)*$//'


      to remove any number of ~@~ at end of line (assuming of course that the n in your sample represents the line-ending newline, and not a literal backslash and lowercase N.)



      or in seds that support -E for extended regular expressions:



      ... | sed -E 's/(~@~)+$//' 


      or you could use awk -F'~@~' and handle the fields you need to at the same time.






      share|improve this answer


























        up vote
        3
        down vote













        ... | sed 's/(~@~)*$//'


        to remove any number of ~@~ at end of line (assuming of course that the n in your sample represents the line-ending newline, and not a literal backslash and lowercase N.)



        or in seds that support -E for extended regular expressions:



        ... | sed -E 's/(~@~)+$//' 


        or you could use awk -F'~@~' and handle the fields you need to at the same time.






        share|improve this answer
























          up vote
          3
          down vote










          up vote
          3
          down vote









          ... | sed 's/(~@~)*$//'


          to remove any number of ~@~ at end of line (assuming of course that the n in your sample represents the line-ending newline, and not a literal backslash and lowercase N.)



          or in seds that support -E for extended regular expressions:



          ... | sed -E 's/(~@~)+$//' 


          or you could use awk -F'~@~' and handle the fields you need to at the same time.






          share|improve this answer














          ... | sed 's/(~@~)*$//'


          to remove any number of ~@~ at end of line (assuming of course that the n in your sample represents the line-ending newline, and not a literal backslash and lowercase N.)



          or in seds that support -E for extended regular expressions:



          ... | sed -E 's/(~@~)+$//' 


          or you could use awk -F'~@~' and handle the fields you need to at the same time.







          share|improve this answer














          share|improve this answer



          share|improve this answer








          edited Dec 15 '17 at 11:33

























          answered Dec 14 '17 at 20:10









          ilkkachu

          49.9k674137




          49.9k674137






















              up vote
              0
              down vote













              Assuming the above data is in file f1.txt.
              We can use the sed command and remove every occurrence of ~@~~@~ and ~@~.
              I've replaced it with a blank space.



              sed -e 's/~@~~@~/#/g;s/~@~/#/g;s/# */ /g' f1.txt > output.txt


              Result



              ABC TUV XYZ PQR 13470 Management Non-Employee IJK T 12345 12345 abc@gmail.com B 6789 09/25/2017 11:31:22.000000 09/25/2017 3:22:03.000000





              share|improve this answer
























                up vote
                0
                down vote













                Assuming the above data is in file f1.txt.
                We can use the sed command and remove every occurrence of ~@~~@~ and ~@~.
                I've replaced it with a blank space.



                sed -e 's/~@~~@~/#/g;s/~@~/#/g;s/# */ /g' f1.txt > output.txt


                Result



                ABC TUV XYZ PQR 13470 Management Non-Employee IJK T 12345 12345 abc@gmail.com B 6789 09/25/2017 11:31:22.000000 09/25/2017 3:22:03.000000





                share|improve this answer






















                  up vote
                  0
                  down vote










                  up vote
                  0
                  down vote









                  Assuming the above data is in file f1.txt.
                  We can use the sed command and remove every occurrence of ~@~~@~ and ~@~.
                  I've replaced it with a blank space.



                  sed -e 's/~@~~@~/#/g;s/~@~/#/g;s/# */ /g' f1.txt > output.txt


                  Result



                  ABC TUV XYZ PQR 13470 Management Non-Employee IJK T 12345 12345 abc@gmail.com B 6789 09/25/2017 11:31:22.000000 09/25/2017 3:22:03.000000





                  share|improve this answer












                  Assuming the above data is in file f1.txt.
                  We can use the sed command and remove every occurrence of ~@~~@~ and ~@~.
                  I've replaced it with a blank space.



                  sed -e 's/~@~~@~/#/g;s/~@~/#/g;s/# */ /g' f1.txt > output.txt


                  Result



                  ABC TUV XYZ PQR 13470 Management Non-Employee IJK T 12345 12345 abc@gmail.com B 6789 09/25/2017 11:31:22.000000 09/25/2017 3:22:03.000000






                  share|improve this answer












                  share|improve this answer



                  share|improve this answer










                  answered Dec 14 '17 at 20:57









                  Prashant Luhar

                  336




                  336




















                      up vote
                      -1
                      down vote













                      cat file |sed 's/~@~~@~~@~//g' |sed 's/~@~$//'


                      the first sed remove the string ~@~~@~ and the second sed remove the last ~@~






                      share|improve this answer






















                      • it doesn't remove the ~@~ delimiters, the first sed removes the string ~@~~@~ and the second removes the ~@~ that remains at the end of the line
                        – Emilio Galarraga
                        Dec 14 '17 at 20:15










                      • There's a pipe missing (although it would be better to get rid of the cat altogether). Also as @ilkkachu points out, you are getting rid of things in the middle of the line and you are only getting rid of a single delimiter at the end of the line.
                        – NickD
                        Dec 14 '17 at 20:20










                      • Sorry, I mean it removes the ~@~~@~'s from the middle of the line, as in the beginning of the sample, here: ABC~@~~@~TUV. Not the single ~@~'s, of course.
                        – ilkkachu
                        Dec 14 '17 at 20:27











                      • @Nick, at EOL, it works, since the first one removes all doubled ~@~'s, and the second removes the single one potentially left over at the end.
                        – ilkkachu
                        Dec 14 '17 at 20:27






                      • 1




                        @user3333911, well, that will still remove the ~@~'s in the middle, if some input happens to have two adjacent empty columns. That's not really a robust feature if the aim is to only remove the ones at the end of line. Now it will also leave one ~@~ in the end if their count is one less than a multiple of three (i.e. 3n + 2)
                        – ilkkachu
                        Dec 15 '17 at 11:39














                      up vote
                      -1
                      down vote













                      cat file |sed 's/~@~~@~~@~//g' |sed 's/~@~$//'


                      the first sed remove the string ~@~~@~ and the second sed remove the last ~@~






                      share|improve this answer






















                      • it doesn't remove the ~@~ delimiters, the first sed removes the string ~@~~@~ and the second removes the ~@~ that remains at the end of the line
                        – Emilio Galarraga
                        Dec 14 '17 at 20:15










                      • There's a pipe missing (although it would be better to get rid of the cat altogether). Also as @ilkkachu points out, you are getting rid of things in the middle of the line and you are only getting rid of a single delimiter at the end of the line.
                        – NickD
                        Dec 14 '17 at 20:20










                      • Sorry, I mean it removes the ~@~~@~'s from the middle of the line, as in the beginning of the sample, here: ABC~@~~@~TUV. Not the single ~@~'s, of course.
                        – ilkkachu
                        Dec 14 '17 at 20:27











                      • @Nick, at EOL, it works, since the first one removes all doubled ~@~'s, and the second removes the single one potentially left over at the end.
                        – ilkkachu
                        Dec 14 '17 at 20:27






                      • 1




                        @user3333911, well, that will still remove the ~@~'s in the middle, if some input happens to have two adjacent empty columns. That's not really a robust feature if the aim is to only remove the ones at the end of line. Now it will also leave one ~@~ in the end if their count is one less than a multiple of three (i.e. 3n + 2)
                        – ilkkachu
                        Dec 15 '17 at 11:39












                      up vote
                      -1
                      down vote










                      up vote
                      -1
                      down vote









                      cat file |sed 's/~@~~@~~@~//g' |sed 's/~@~$//'


                      the first sed remove the string ~@~~@~ and the second sed remove the last ~@~






                      share|improve this answer














                      cat file |sed 's/~@~~@~~@~//g' |sed 's/~@~$//'


                      the first sed remove the string ~@~~@~ and the second sed remove the last ~@~







                      share|improve this answer














                      share|improve this answer



                      share|improve this answer








                      edited Dec 15 '17 at 10:52

























                      answered Dec 14 '17 at 19:45









                      Emilio Galarraga

                      32628




                      32628











                      • it doesn't remove the ~@~ delimiters, the first sed removes the string ~@~~@~ and the second removes the ~@~ that remains at the end of the line
                        – Emilio Galarraga
                        Dec 14 '17 at 20:15










                      • There's a pipe missing (although it would be better to get rid of the cat altogether). Also as @ilkkachu points out, you are getting rid of things in the middle of the line and you are only getting rid of a single delimiter at the end of the line.
                        – NickD
                        Dec 14 '17 at 20:20










                      • Sorry, I mean it removes the ~@~~@~'s from the middle of the line, as in the beginning of the sample, here: ABC~@~~@~TUV. Not the single ~@~'s, of course.
                        – ilkkachu
                        Dec 14 '17 at 20:27











                      • @Nick, at EOL, it works, since the first one removes all doubled ~@~'s, and the second removes the single one potentially left over at the end.
                        – ilkkachu
                        Dec 14 '17 at 20:27






                      • 1




                        @user3333911, well, that will still remove the ~@~'s in the middle, if some input happens to have two adjacent empty columns. That's not really a robust feature if the aim is to only remove the ones at the end of line. Now it will also leave one ~@~ in the end if their count is one less than a multiple of three (i.e. 3n + 2)
                        – ilkkachu
                        Dec 15 '17 at 11:39
















                      • it doesn't remove the ~@~ delimiters, the first sed removes the string ~@~~@~ and the second removes the ~@~ that remains at the end of the line
                        – Emilio Galarraga
                        Dec 14 '17 at 20:15










                      • There's a pipe missing (although it would be better to get rid of the cat altogether). Also as @ilkkachu points out, you are getting rid of things in the middle of the line and you are only getting rid of a single delimiter at the end of the line.
                        – NickD
                        Dec 14 '17 at 20:20










                      • Sorry, I mean it removes the ~@~~@~'s from the middle of the line, as in the beginning of the sample, here: ABC~@~~@~TUV. Not the single ~@~'s, of course.
                        – ilkkachu
                        Dec 14 '17 at 20:27











                      • @Nick, at EOL, it works, since the first one removes all doubled ~@~'s, and the second removes the single one potentially left over at the end.
                        – ilkkachu
                        Dec 14 '17 at 20:27






                      • 1




                        @user3333911, well, that will still remove the ~@~'s in the middle, if some input happens to have two adjacent empty columns. That's not really a robust feature if the aim is to only remove the ones at the end of line. Now it will also leave one ~@~ in the end if their count is one less than a multiple of three (i.e. 3n + 2)
                        – ilkkachu
                        Dec 15 '17 at 11:39















                      it doesn't remove the ~@~ delimiters, the first sed removes the string ~@~~@~ and the second removes the ~@~ that remains at the end of the line
                      – Emilio Galarraga
                      Dec 14 '17 at 20:15




                      it doesn't remove the ~@~ delimiters, the first sed removes the string ~@~~@~ and the second removes the ~@~ that remains at the end of the line
                      – Emilio Galarraga
                      Dec 14 '17 at 20:15












                      There's a pipe missing (although it would be better to get rid of the cat altogether). Also as @ilkkachu points out, you are getting rid of things in the middle of the line and you are only getting rid of a single delimiter at the end of the line.
                      – NickD
                      Dec 14 '17 at 20:20




                      There's a pipe missing (although it would be better to get rid of the cat altogether). Also as @ilkkachu points out, you are getting rid of things in the middle of the line and you are only getting rid of a single delimiter at the end of the line.
                      – NickD
                      Dec 14 '17 at 20:20












                      Sorry, I mean it removes the ~@~~@~'s from the middle of the line, as in the beginning of the sample, here: ABC~@~~@~TUV. Not the single ~@~'s, of course.
                      – ilkkachu
                      Dec 14 '17 at 20:27





                      Sorry, I mean it removes the ~@~~@~'s from the middle of the line, as in the beginning of the sample, here: ABC~@~~@~TUV. Not the single ~@~'s, of course.
                      – ilkkachu
                      Dec 14 '17 at 20:27













                      @Nick, at EOL, it works, since the first one removes all doubled ~@~'s, and the second removes the single one potentially left over at the end.
                      – ilkkachu
                      Dec 14 '17 at 20:27




                      @Nick, at EOL, it works, since the first one removes all doubled ~@~'s, and the second removes the single one potentially left over at the end.
                      – ilkkachu
                      Dec 14 '17 at 20:27




                      1




                      1




                      @user3333911, well, that will still remove the ~@~'s in the middle, if some input happens to have two adjacent empty columns. That's not really a robust feature if the aim is to only remove the ones at the end of line. Now it will also leave one ~@~ in the end if their count is one less than a multiple of three (i.e. 3n + 2)
                      – ilkkachu
                      Dec 15 '17 at 11:39




                      @user3333911, well, that will still remove the ~@~'s in the middle, if some input happens to have two adjacent empty columns. That's not really a robust feature if the aim is to only remove the ones at the end of line. Now it will also leave one ~@~ in the end if their count is one less than a multiple of three (i.e. 3n + 2)
                      – ilkkachu
                      Dec 15 '17 at 11:39












                       

                      draft saved


                      draft discarded


























                       


                      draft saved


                      draft discarded














                      StackExchange.ready(
                      function ()
                      StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2funix.stackexchange.com%2fquestions%2f410934%2fremove-special-characters-at-end-of-row-in-unix-file%23new-answer', 'question_page');

                      );

                      Post as a guest













































































                      dht8LoKfW8yR,n4ho48q1GS4NDZ,xQFm al48 AXbtxhbrQS,YZ9
                      hbQFZPQ YMG0K JjWGxl7pr5qisnTY7e knt05i0pOwo,QRThKyhrG,Sw9sPoiSgC8amTizdmixpvvWKZbcoPdLdV r4

                      Popular posts from this blog

                      How to check contact read email or not when send email to Individual?

                      How many registers does an x86_64 CPU actually have?

                      Displaying single band from multi-band raster using QGIS