如何通过命令行将此字符串转换为列表

mcg*_*ilm 0 shell awk sed

我有一些名为like的文件,C1_1_B_(1)IMG1511.jpg我想将它们拆分成一个列表,然后我回来了

 C1
 1
 B
 (1)
 IMG1511.jpg
Run Code Online (Sandbox Code Playgroud)

想弄清楚,如果我需要做这个sedawk或者regex甚至什么会像我能做到这一点的AppleScript中,但我宁愿称之为shell命令,因为它的速度要快得多

编辑

好的,现在它改变了一点,我可以弄清楚如何解决它

例子是

"P24-M_(1)Lighter_Ray_Logo_Full_Color.jpg" 
"P24_(1)24x36loren.jpg" 
Run Code Online (Sandbox Code Playgroud)

所以_(*)表示我想停止列表的位置,所以我最终得到了

P24
M
(1)
Lighter_Ray_Logo_Full_Color.jpg
Run Code Online (Sandbox Code Playgroud)

P24
(1)
24x36loren.jpg
Run Code Online (Sandbox Code Playgroud)

Boh*_*ian 5

转换_为新行:

echo "C1_1_B_(1)IMG1511.jpg" | tr '_' '\n'
Run Code Online (Sandbox Code Playgroud)

输出:

C1
1
B
(1)IMG1511.jpg
Run Code Online (Sandbox Code Playgroud)

虽然,看起来你也希望分开).没有办法tr,但......

echo "C1_1_B_(1)IMG1511.jpg" | tr '_' '\n' | sed -e 's/)/)\
/'
Run Code Online (Sandbox Code Playgroud)

有一个换行替换字符串,这是需要为Mac.在其他*nix OS上,一个简单的逃脱工作:

echo "C1_1_B_(1)IMG1511.jpg" | tr '_' '\n' | sed -e 's/)/)\n/'
Run Code Online (Sandbox Code Playgroud)

输出:

C1
1
B
(1)
IMG1511.jpg
Run Code Online (Sandbox Code Playgroud)

  • @Alfred Fazio:不妨再进一步(少)...`sed's /)/)_ /; s/_/\n/g'` ...(仅使用一个实用程序) (2认同)