2

我想将 -[space] 作为 AWK 中的字段分隔符。

例如,

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
4

1 回答 1

5

awk了解您的引用:),但请注意 GNU-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. 您更改的上述命令的确切输出以满足您的需要
于 2009-03-14T03:20:43.013 回答