无法在AWK中将多个字符设置为字段分隔符

Léo*_* 준영 2 awk

我希望 - [space]作为AWK中的字段分隔符.

例如,

awk -F-[space] {' print $1 '}
Run Code Online (Sandbox Code Playgroud)

如何在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
Run Code Online (Sandbox Code Playgroud)

带有sed的Vlad命令的确切输出

$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
Run Code Online (Sandbox Code Playgroud)

vla*_*adr 5

了解你的报价:),但是要知道,GNU awk-F需要扩展正则表达式(ERE)作为它的参数,所以你也需要,如果你想有一个文本匹配,而不是一个ERE匹配,例如,相应地逃脱

awk -F '- ' '{ print $1 }'
Run Code Online (Sandbox Code Playgroud)

UPDATE

您的最新评论仍不清楚.

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

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

  1. 对于以下文件:

    ../Phy/Phy1/file1.pdf
    ../Phy/file2.pdf
    ../Che/Che1/file3.pdf
    ../Che/file4.pdf
    ../file5.pdf
    ../Phy2/file6.pdf
    
    Run Code Online (Sandbox Code Playgroud)
  2. 我想要显示:

    PhyPhy1 file1.pdf - Phy file2.pdf - Che/Che1 file3.pdf - Che file4.pdf
    
    Run Code Online (Sandbox Code Playgroud)

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

echo lpr ../{Che,Phy}/{*.pdf,*/*.pdf}
Run Code Online (Sandbox Code Playgroud)

显示:

lpr Che/file4.pdf
lpr Che/Che1/file3.pdf
lpr Phy/file2.pdf
lpr Phy/Phy1/file1.pdf
Run Code Online (Sandbox Code Playgroud)

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


UPDATE

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

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'
Run Code Online (Sandbox Code Playgroud)

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

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