【问题标题】:Unable to set many characters to the field separator in AWK无法在 AWK 中将多个字符设置为字段分隔符
【发布时间】:2010-10-13 07:34:09
【问题描述】:

我想在 AWK 中使用 -[space] 作为字段分隔符。

例如,

awk -F-[space] {' print $1 '}

如何在 AWK 中使用多个字符作为字段分隔符?

[编辑]

弗拉德命令的准确输出

$echo /Users/Sam/Dropbox/Education/Chemistry/Other\ materials/*.pdf | sed -e 's: : - :g'
/Users/Sam/Dropbox/Education/Chemistry/Other - materials/CHE_IB_LAB.pdf - /Users/Sam/Dropbox/Education/Chemistry/Other - materials/Lecture19_20_21.pdf

Vlad 使用 sed 命令的确切输出

$echo /Users/Sam/Dropbox/Education/Chemistry/Other\ materials/*.pdf
/Users/Sam/Dropbox/Education/Chemistry/Other materials/CHE_IB_LAB.pdf /Users/Sam/Dropbox/Education/Chemistry/Other materials/Lecture19_20_21.pdf

【问题讨论】:

    标签: awk


    【解决方案1】:

    知道你的引用:),但请注意 GNU awk-F 将扩展正则表达式 (ERE) 作为其参数,因此如果你想要文本匹配而不是ERE 匹配,例如

    awk -F '- ' '{ print $1 }'
    

    更新

    您的最新评论仍不清楚。

    1. 您磁盘上 PDF 文件的完整路径是什么
    2. 您需要这些文件的确切输出是什么?

    我需要一个具体的例子,例如

    1. 对于以下文件:

      ../Phy/Phy1/file1.pdf
      ../Phy/file2.pdf
      ../Che/Che1/file3.pdf
      ../Che/file4.pdf
      ../file5.pdf
      ../Phy2/file6.pdf
      
    2. 我要显示:

      PhyPhy1 file1.pdf - Phy file2.pdf - Che/Che1 file3.pdf - Che file4.pdf
      

    请注意,对于上面的示例文件,命令:

    echo lpr ../{Che,Phy}/{*.pdf,*/*.pdf}
    

    显示:

    lpr Che/file4.pdf
    lpr Che/Che1/file3.pdf
    lpr Phy/file2.pdf
    lpr Phy/Phy1/file1.pdf
    

    让我们先把这部分弄好,然后我们会担心破折号等。


    更新

    好的。请运行以下一个或两个几乎等效命令:

    echo Dropbox/Mas/edu/{Phy,Che}/*.pdf | sed -e 's: : - :g'
    ls -1d Dropbox/Mas/edu/{Phy,Che}/*.pdf | paste -s -d '|' - | sed -e 's:|: - :g'
    

    然后请编辑您的原始帖子并添加以下内容,分隔

    1. 上述命令的准确输出(复制粘贴)
    2. 上述命令的确切输出由您更改以满足您的需要

    【讨论】:

    • 我无法将空格用作字段分隔符。你看到下面的代码有什么错误吗 $echo lpr /../{Che,Phy}/{.pdf,*/.pdf} | awk -F ' - ' '{ 打印 $1 }' ?
    • t 打印我只是第一次出现。我想打印所有出现的情况。也许,我的错误在于 1 美元。这是否意味着打印所有出现的事件?
    • print $1 打印第一列......你到底想达到什么目的?
    • 您是否尝试在 pdf 文件名之间插入破折号?如果是这样,则使用 sed 将空格替换为例如空格-破折号-空格:$echo a b c d | sed -e 's: : - :g'
    • @Vlad:我正在尝试通过 AWK 将 pdf 文件名作为一个列表而不是一行来显示。
    猜你喜欢
    • 2014-10-14
    • 2013-03-17
    • 1970-01-01
    • 2014-01-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多