如何将 tr 与 xargs 结合并剪切以挤压重复

问题描述 投票:0回答:1

这个问题的最佳答案表明,

cut
可以与
tr
一起使用,根据

的重复空格进行剪切
< file tr -s ' ' | cut -d ' ' -f 8

我想获取目录中多个 Git 存储库的远程信息,并尝试使用以下内容从每个存储库中提取远程 URL 字段:

ls | xargs -I{} git -C {} remote -vv | sed -n 'p;n' | tr -s " " | cut -d ' ' -f1

但是,这会产生(例如)以下输出,其中我可以看到保留了两个连续的空格(Unicode 代码点 32):

origin  https://github.com/jik876/hifi-gan.git
origin  https://github.com/NVIDIA/NeMo.git
origin  https://github.com/NVIDIA/tacotron2.git

(我还使用了

xargs
tr

我在这里缺少什么?

bash cut tr
1个回答
0
投票

git remote
的输出包含制表符而不是空格。使用
expand
将它们替换为脚本中的空格:

ls | xargs -I{} git -C {} remote -vv | sed -n 'p;n' | expand | tr -s " " | cut -d ' ' -f1

或者直接用制表符分隔字段,这是

awk
的默认字段分隔符,正如 William Pursell 所建议的:

ls | xargs -I. git -C . remote -vv | awk '{ print $2; }'
© www.soinside.com 2019 - 2024. All rights reserved.