Print table with empty columns for consecutive delimiters

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












1















I typically use column to convert input into a table, eg:



$ echo 'atbtcndtetf' | column -t -s $'t'
a b c
d e f


However it collapses empty columns eg:



$ echo 'atbtcndttf' | column -t -s $'t'
a b c
d f


Rather than printing an empty column when there are consecutive delimiters. This is what I would like, using column or otherwise:



a b c
d f









share|improve this question



















  • 1





    Instead of echo try printf

    – Romeo Ninov
    Jan 23 at 11:53






  • 2





    The questioner is clearly using a shell where -e is implied. We have a whole family of duplicate Q&As about that, starting from unix.stackexchange.com/questions/65803 . But that is not the focus of this question, which is about the column command. Imagine that the input of the column command is whatever is necessary to yield TAB-delimited fields within LF-delimited records, some of which are empty.

    – JdeBP
    Jan 23 at 12:14















1















I typically use column to convert input into a table, eg:



$ echo 'atbtcndtetf' | column -t -s $'t'
a b c
d e f


However it collapses empty columns eg:



$ echo 'atbtcndttf' | column -t -s $'t'
a b c
d f


Rather than printing an empty column when there are consecutive delimiters. This is what I would like, using column or otherwise:



a b c
d f









share|improve this question



















  • 1





    Instead of echo try printf

    – Romeo Ninov
    Jan 23 at 11:53






  • 2





    The questioner is clearly using a shell where -e is implied. We have a whole family of duplicate Q&As about that, starting from unix.stackexchange.com/questions/65803 . But that is not the focus of this question, which is about the column command. Imagine that the input of the column command is whatever is necessary to yield TAB-delimited fields within LF-delimited records, some of which are empty.

    – JdeBP
    Jan 23 at 12:14













1












1








1








I typically use column to convert input into a table, eg:



$ echo 'atbtcndtetf' | column -t -s $'t'
a b c
d e f


However it collapses empty columns eg:



$ echo 'atbtcndttf' | column -t -s $'t'
a b c
d f


Rather than printing an empty column when there are consecutive delimiters. This is what I would like, using column or otherwise:



a b c
d f









share|improve this question
















I typically use column to convert input into a table, eg:



$ echo 'atbtcndtetf' | column -t -s $'t'
a b c
d e f


However it collapses empty columns eg:



$ echo 'atbtcndttf' | column -t -s $'t'
a b c
d f


Rather than printing an empty column when there are consecutive delimiters. This is what I would like, using column or otherwise:



a b c
d f






shell text-formatting columns






share|improve this question















share|improve this question













share|improve this question




share|improve this question








edited Jan 23 at 12:07









Jeff Schaller

41.2k1056131




41.2k1056131










asked Jan 23 at 11:49









tekumaratekumara

1083




1083







  • 1





    Instead of echo try printf

    – Romeo Ninov
    Jan 23 at 11:53






  • 2





    The questioner is clearly using a shell where -e is implied. We have a whole family of duplicate Q&As about that, starting from unix.stackexchange.com/questions/65803 . But that is not the focus of this question, which is about the column command. Imagine that the input of the column command is whatever is necessary to yield TAB-delimited fields within LF-delimited records, some of which are empty.

    – JdeBP
    Jan 23 at 12:14












  • 1





    Instead of echo try printf

    – Romeo Ninov
    Jan 23 at 11:53






  • 2





    The questioner is clearly using a shell where -e is implied. We have a whole family of duplicate Q&As about that, starting from unix.stackexchange.com/questions/65803 . But that is not the focus of this question, which is about the column command. Imagine that the input of the column command is whatever is necessary to yield TAB-delimited fields within LF-delimited records, some of which are empty.

    – JdeBP
    Jan 23 at 12:14







1




1





Instead of echo try printf

– Romeo Ninov
Jan 23 at 11:53





Instead of echo try printf

– Romeo Ninov
Jan 23 at 11:53




2




2





The questioner is clearly using a shell where -e is implied. We have a whole family of duplicate Q&As about that, starting from unix.stackexchange.com/questions/65803 . But that is not the focus of this question, which is about the column command. Imagine that the input of the column command is whatever is necessary to yield TAB-delimited fields within LF-delimited records, some of which are empty.

– JdeBP
Jan 23 at 12:14





The questioner is clearly using a shell where -e is implied. We have a whole family of duplicate Q&As about that, starting from unix.stackexchange.com/questions/65803 . But that is not the focus of this question, which is about the column command. Imagine that the input of the column command is whatever is necessary to yield TAB-delimited fields within LF-delimited records, some of which are empty.

– JdeBP
Jan 23 at 12:14










1 Answer
1






active

oldest

votes


















4














If you use GNU column:




-n

By default, the column command will merge multiple adjacent delimiters into a single delimiter when using the -t option; this option disables that behavior. This option is a Debian GNU/Linux extension.




printf 'atbtcndttfn' | column -t -n -s $'t'


Output:



a b c
d f



If GNU column is not available, you can use sed to add a space (or something else, e.g. a -) between the tabs:



printf 'atbtcndttfn' | sed -e ':loop; s/tt/t-t/; t loop' | column -t -s $'t'





share|improve this answer

























  • Thanks for the sed suggestion! I'm using Mac OS X so don't have GNU column or GNU sed, so this is what ended up working for me: printf 'atbtcndttfn' | sed -$'s/tt/t-t/g' | column -t -s $'t'

    – tekumara
    Jan 24 at 3:21











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',
autoActivateHeartbeat: false,
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%2f496193%2fprint-table-with-empty-columns-for-consecutive-delimiters%23new-answer', 'question_page');

);

Post as a guest















Required, but never shown

























1 Answer
1






active

oldest

votes








1 Answer
1






active

oldest

votes









active

oldest

votes






active

oldest

votes









4














If you use GNU column:




-n

By default, the column command will merge multiple adjacent delimiters into a single delimiter when using the -t option; this option disables that behavior. This option is a Debian GNU/Linux extension.




printf 'atbtcndttfn' | column -t -n -s $'t'


Output:



a b c
d f



If GNU column is not available, you can use sed to add a space (or something else, e.g. a -) between the tabs:



printf 'atbtcndttfn' | sed -e ':loop; s/tt/t-t/; t loop' | column -t -s $'t'





share|improve this answer

























  • Thanks for the sed suggestion! I'm using Mac OS X so don't have GNU column or GNU sed, so this is what ended up working for me: printf 'atbtcndttfn' | sed -$'s/tt/t-t/g' | column -t -s $'t'

    – tekumara
    Jan 24 at 3:21
















4














If you use GNU column:




-n

By default, the column command will merge multiple adjacent delimiters into a single delimiter when using the -t option; this option disables that behavior. This option is a Debian GNU/Linux extension.




printf 'atbtcndttfn' | column -t -n -s $'t'


Output:



a b c
d f



If GNU column is not available, you can use sed to add a space (or something else, e.g. a -) between the tabs:



printf 'atbtcndttfn' | sed -e ':loop; s/tt/t-t/; t loop' | column -t -s $'t'





share|improve this answer

























  • Thanks for the sed suggestion! I'm using Mac OS X so don't have GNU column or GNU sed, so this is what ended up working for me: printf 'atbtcndttfn' | sed -$'s/tt/t-t/g' | column -t -s $'t'

    – tekumara
    Jan 24 at 3:21














4












4








4







If you use GNU column:




-n

By default, the column command will merge multiple adjacent delimiters into a single delimiter when using the -t option; this option disables that behavior. This option is a Debian GNU/Linux extension.




printf 'atbtcndttfn' | column -t -n -s $'t'


Output:



a b c
d f



If GNU column is not available, you can use sed to add a space (or something else, e.g. a -) between the tabs:



printf 'atbtcndttfn' | sed -e ':loop; s/tt/t-t/; t loop' | column -t -s $'t'





share|improve this answer















If you use GNU column:




-n

By default, the column command will merge multiple adjacent delimiters into a single delimiter when using the -t option; this option disables that behavior. This option is a Debian GNU/Linux extension.




printf 'atbtcndttfn' | column -t -n -s $'t'


Output:



a b c
d f



If GNU column is not available, you can use sed to add a space (or something else, e.g. a -) between the tabs:



printf 'atbtcndttfn' | sed -e ':loop; s/tt/t-t/; t loop' | column -t -s $'t'






share|improve this answer














share|improve this answer



share|improve this answer








edited Jan 23 at 16:05

























answered Jan 23 at 11:56









RoVoRoVo

3,141216




3,141216












  • Thanks for the sed suggestion! I'm using Mac OS X so don't have GNU column or GNU sed, so this is what ended up working for me: printf 'atbtcndttfn' | sed -$'s/tt/t-t/g' | column -t -s $'t'

    – tekumara
    Jan 24 at 3:21


















  • Thanks for the sed suggestion! I'm using Mac OS X so don't have GNU column or GNU sed, so this is what ended up working for me: printf 'atbtcndttfn' | sed -$'s/tt/t-t/g' | column -t -s $'t'

    – tekumara
    Jan 24 at 3:21

















Thanks for the sed suggestion! I'm using Mac OS X so don't have GNU column or GNU sed, so this is what ended up working for me: printf 'atbtcndttfn' | sed -$'s/tt/t-t/g' | column -t -s $'t'

– tekumara
Jan 24 at 3:21






Thanks for the sed suggestion! I'm using Mac OS X so don't have GNU column or GNU sed, so this is what ended up working for me: printf 'atbtcndttfn' | sed -$'s/tt/t-t/g' | column -t -s $'t'

– tekumara
Jan 24 at 3:21


















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.




draft saved


draft discarded














StackExchange.ready(
function ()
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2funix.stackexchange.com%2fquestions%2f496193%2fprint-table-with-empty-columns-for-consecutive-delimiters%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






Popular posts from this blog

Peggy Mitchell

Palaiologos

The Forum (Inglewood, California)