Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/swift/19.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
无法在AWK中为字段分隔符设置多个字符_Awk - Fatal编程技术网

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

无法在AWK中为字段分隔符设置多个字符,awk,Awk,我想在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_I

我想在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
$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
Vlad命令与sed的精确输出

$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
$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
知道你的引用:),但要知道GNU
awk
-F
将扩展正则表达式(ERE)作为其参数,因此如果你想要文本匹配而不是ERE匹配,你可能也需要相应地转义,例如

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

你最近的评论还不清楚

  • 磁盘上PDF文件的完整路径是什么
  • 您需要这些文件的确切输出是什么
  • 我需要一个具体的例子

  • 对于以下文件:

    ../Phy/Phy1/file1.pdf
    ../Phy/file2.pdf
    ../Che/Che1/file3.pdf
    ../Che/file4.pdf
    ../file5.pdf
    ../Phy2/file6.pdf
    
  • 我想展示:

    PhyPhy1 file1.pdf - Phy file2.pdf - Che/Che1 file3.pdf - Che file4.pdf
    
  • 请注意,对于上述示例文件,命令:

    echo lpr ../{Che,Phy}/{*.pdf,*/*.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'
    
    然后,请编辑您的原始帖子并添加以下内容(分开):

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

  • 我无法将空格用作字段分隔符。在下面的代码$echo lpr/./{Che,Phy}/{.pdf,*/.pdf}| awk-F'-''{print$1}'中您是否看到任何错误?t仅打印第一次出现的代码。我想打印所有事件。也许,我的错误在1美元。这是否意味着打印所有事件?打印$1打印第一列。。。你到底想达到什么目的?你可能想在pdf文件名之间插入破折号吗?如果是这样,那么使用sed将空格替换为空格,例如空格:echo a b c d | sed-e's::-:g'@Vlad:I试图通过AWK将pdf文件名替换为列表,而不是行。