首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Bash复制单独文件中的多行

Bash复制单独文件中的多行
EN

Stack Overflow用户
提问于 2015-12-19 20:41:47
回答 2查看 276关注 0票数 1

我有一个包含以下条目的文件,非常长,所以请举几个例子:

代码语言:javascript
复制
    media-libs/gd fontconfig xpm
    media-sound/audacious -gtk gtk3
    net-analyzer/wireshark -gtk3 -ssl -qt4 qt5 lua geoip kerberos adns
    net-dialup/ppp -gtk

我需要在/和第一个空格之间复制名为like name的新文件中的每一行。

所以我有一个名为gd,audacious,wireshark和ppp的文件,在文件名后面有适当的内容。

代码语言:javascript
复制
    media-libs/gd fontconfig xpm
    media-sound/audacious -gtk gtk3
    net-analyzer/wireshark -gtk3 -ssl -qt4 qt5 lua geoip kerberos adns
    net-dialup/ppp -gtk

感谢您的帮助,祝周末愉快!

Silvio

EN

回答 2

Stack Overflow用户

发布于 2015-12-19 21:06:03

我认为你需要这样的东西,但请在一个单独的目录中尝试它,在那里你只有一份数据的副本:

代码语言:javascript
复制
awk '{f=$1;sub(/.*\//,"",f);print > f}' yourFile

它可能不是那么健壮,但是它取每一行的第一个字段,将所有内容剥离成斜杠并将其保存为f,然后将整个行写到文件f中。

票数 2
EN

Stack Overflow用户

发布于 2015-12-20 05:05:48

当您想要使用while循环进行循环时,您可以查看:

代码语言:javascript
复制
while read -r line; do
        echo "line=${line}"
        noSlash=${line##*/}
        echo "noSlash=${noSlash}"
        filename=${noSlash%% *}
        echo "filename=${filename}"
        content=${noSlash#* }
        echo "Content=${content}"
done < input

每次对代码最后一行的输入文件进行1行解析。使用#%解析变量。测试结果在上面的代码中得到了响应。WHen如果你对这个解决方案满意,你可以使用

代码语言:javascript
复制
while read -r line; do
        noSlash=${line##*/}
        filename=${noSlash%% *}
        content=${noSlash#* }
        printf "%s\n" "${content}" > "${filename}"
done < input
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/34370870

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档