Thread overview
How to use xargs to remove whitespaces (Dub executable path)
Sep 04, 2019
Andre Pany
Sep 04, 2019
H. S. Teoh
Sep 04, 2019
Andre Pany
Sep 04, 2019
Les De Ridder
Sep 04, 2019
Sebastiaan Koppe
Sep 04, 2019
Andre Pany
September 04, 2019
Hi,

I try to get the executable path from a dub package using this command:

dub describe dscanner --data=target-path,target-name --data-list | xargs

But the output always contains a space between target-path and target-name:
/home/user/.dub/packages/dscanner-0.8.0/dscanner/bin/ dscanner

How can I get the full path without a space on a debian system in a 1 liner?

Kind regards
André


September 03, 2019
On Wed, Sep 04, 2019 at 05:52:12AM +0000, Andre Pany via Digitalmars-d-learn wrote:
> Hi,
> 
> I try to get the executable path from a dub package using this command:
> 
> dub describe dscanner --data=target-path,target-name --data-list | xargs
> 
> But the output always contains a space between target-path and target-name: /home/user/.dub/packages/dscanner-0.8.0/dscanner/bin/ dscanner
> 
> How can I get the full path without a space on a debian system in a 1 liner?
[...]

Try:
	... | sed -e's@ @@g'


T

-- 
Elegant or ugly code as well as fine or rude sentences have something in common: they don't depend on the language. -- Luca De Vitis
September 04, 2019
On Wednesday, 4 September 2019 at 06:40:13 UTC, H. S. Teoh wrote:
> On Wed, Sep 04, 2019 at 05:52:12AM +0000, Andre Pany via Digitalmars-d-learn wrote:
>> Hi,
>> 
>> I try to get the executable path from a dub package using this command:
>> 
>> dub describe dscanner --data=target-path,target-name --data-list | xargs
>> 
>> But the output always contains a space between target-path and target-name: /home/user/.dub/packages/dscanner-0.8.0/dscanner/bin/ dscanner
>> 
>> How can I get the full path without a space on a debian system in a 1 liner?
> [...]
>
> Try:
> 	... | sed -e's@ @@g'
>
>
> T

Thanks a lot. Works fine:)
dub describe dscanner --data=target-path,target-name --data-list | xargs | sed -e's@ @@g'

Kind regards
André
September 04, 2019
On Wednesday, 4 September 2019 at 08:23:19 UTC, Andre Pany wrote:
> On Wednesday, 4 September 2019 at 06:40:13 UTC, H. S. Teoh wrote:
>> On Wed, Sep 04, 2019 at 05:52:12AM +0000, Andre Pany via Digitalmars-d-learn wrote:
>>> Hi,
>>> 
>>> I try to get the executable path from a dub package using this command:
>>> 
>>> dub describe dscanner --data=target-path,target-name --data-list | xargs
>>> 
>>> But the output always contains a space between target-path and target-name: /home/user/.dub/packages/dscanner-0.8.0/dscanner/bin/ dscanner
>>> 
>>> How can I get the full path without a space on a debian system in a 1 liner?
>> [...]
>>
>> Try:
>> 	... | sed -e's@ @@g'
>>
>>
>> T
>
> Thanks a lot. Works fine:)
> dub describe dscanner --data=target-path,target-name --data-list | xargs | sed -e's@ @@g'

It's better to only replace the last occurrence, so it won't break on
paths containing spaces:

    ... | sed 's/\(.*\) /\1/'

There should probably just be a switch to use NUL characters as the
delimiter though.


September 04, 2019
On Wednesday, 4 September 2019 at 05:52:12 UTC, Andre Pany wrote:
> Hi,
>
> I try to get the executable path from a dub package using this command:
>
> dub describe dscanner --data=target-path,target-name --data-list | xargs
>
> But the output always contains a space between target-path and target-name:
> /home/user/.dub/packages/dscanner-0.8.0/dscanner/bin/ dscanner
>
> How can I get the full path without a space on a debian system in a 1 liner?
>
> Kind regards
> André

What about this?
dub describe scanner --data=target-path,target-name --data-list --data-0 | tr -d '\0'

or if you have jq installed:
dub describe dscanner | jq '.targets[0].buildSettings | "\(.targetPath)/\(.targetName)"'
September 04, 2019
On Wednesday, 4 September 2019 at 10:34:28 UTC, Sebastiaan Koppe wrote:
> On Wednesday, 4 September 2019 at 05:52:12 UTC, Andre Pany wrote:
>> Hi,
>>
>> I try to get the executable path from a dub package using this command:
>>
>> dub describe dscanner --data=target-path,target-name --data-list | xargs
>>
>> But the output always contains a space between target-path and target-name:
>> /home/user/.dub/packages/dscanner-0.8.0/dscanner/bin/ dscanner
>>
>> How can I get the full path without a space on a debian system in a 1 liner?
>>
>> Kind regards
>> André
>
> What about this?
> dub describe scanner --data=target-path,target-name --data-list --data-0 | tr -d '\0'
>
> or if you have jq installed:
> dub describe dscanner | jq '.targets[0].buildSettings | "\(.targetPath)/\(.targetName)"'

Thanks to all! Yes replacing spaces with NUL really makes sense.

Kind regards
André