【发布时间】:2017-06-14 00:17:48
【问题描述】:
我正在编写一个 sed 脚本,该脚本需要一堆行并将它们转换为 matlab 的参数列表(单引号,逗号分隔)。
目前运行良好:
[script to generate list] | sed -n "s#\(.*$\)#'\1',#p#" | tr '\n' ' '
但这给我留下了一个逗号。
通过测试,我可以删除它
[list of comma separated values] | sed -n 's#,$##p#'
但是,当把它们放在一起时:
[script to generate list] | sed -n "s#\(.*$\)#'\1',#;s#,$##p#" | tr '\n' ' '
什么都不输出。
我觉得这与 sed 脚本的第一行中没有 p 有关,但我不希望它打印这些值,我希望它们发送到脚本的下一行(不是t 那是默认的吗?)
编辑:
[script to generate list] 输出目录列表,例如:
./work/matlab_stun_gun/tex/fullTest.pdf
./Downloads/Howfar(tetra2) fixed.pdf
./work/savdocs/win_tests/tex/texReport.pdf
./Downloads/AcademicAudit.pdf
./work/matlab_stun_gun/report.pdf
./Downloads/PMB_4DVMC.pdf
./work/savdocs/win_tests/tex/mouseHeatMap.pdf
./Downloads/Geometry.pdf
./work/savdocs/win_tests/tex/mouseHeatMap.pdf
./work/matlab_stun_gun/tex/fullTest.pdf
列表生成器只是find . -name "*.pdf" | pickl -n 10,根据文件类型/编号等进行了调整。这将成为一个通用脚本。
预期的输出是:
'./work/savdocs/win_tests/tex/mClickss.pdf', './Downloads/Howfar(tetra2) fixed.pdf', './Downloads/MedPhys_defDOSXYZ.pdf', './Downloads/MedPhys_defDOSXYZ.pdf', './report.pdf', './work/savdocs/win_tests/tex/cSwitchs.pdf', './tex/zoomIn.pdf', './tex/fullTest.pdf', './temp/tex/zoomIn.pdf', './tex/zoomIn.pdf'
(注意后面没有逗号)
【问题讨论】:
-
为什么
tr命令后面有括号? -
这是一个复制错误 - 整个内容都在
$()中。已编辑 -
为清楚起见添加预期输出..
-
你忘了修复第二个。
-
您的输入与输出不匹配:)
标签: sed