shell 我需要将一个大的以空格分隔的Debian软件包列表转换成以换行符分隔的列表

tpxzln5u  于 2023-01-21  发布在  Shell
关注(0)|答案(1)|浏览(111)

在Amazon s3 bucket中,我们将Debian软件包存储在不同的文件夹中,每个文件夹包含不同数量的文件。
当从s3 bucket(AWS)调用Debian包时,包是用空格分隔的,现在我需要把这些用空格分隔的包转换成一个用换行符分隔的列表,也就是说每行一个包文件,输入行不包含相同数量的空格。
每个目录包含不同数量的Debian软件包,最后将软件包逐行转换后,将所有软件包(不同文件夹的)存储在一个文件中。
输入:

package1.deb  package2.deb     pacakge3.deb        pacakge4.deb package5.deb

输出:

package1.deb  
package2.deb  
package3.deb  
pacakge4.deb

这是在后台为s3存储桶的不同文件夹运行函数的当前尝试

function convertSpaceToNewLine(){
for line in filename; do
   cat $line| grep '.deb$'|tr [:space:] \\t | sed 's/\t\t*/\n/g' >> folder/newfile
done
}

我已经尝试了许多命令,如truncate、awk、xargs -n 1和sed。谢谢

rjzwgtxy

rjzwgtxy1#

我认为使用sed将空格替换为换行符就足够了。

$ echo package1.deb    package2.deb    pacakge3.deb        pacakge4.deb   package5.deb | sed 's/ /\n/g' 

package1.deb
package2.deb
pacakge3.deb
pacakge4.deb
package5.deb

相关问题