我需要使用选项卡替换斜杠字符,以便使用awk提取目录名称.
/path/to/some/USEFUL_INFORMATION/in/some/path
Run Code Online (Sandbox Code Playgroud)
我尝试过这样做,但它所做的只是在我的输出中加上"t".
sed -e 's/\//\t/g' filename
Run Code Online (Sandbox Code Playgroud)
任何帮助,将不胜感激.
bra*_*zzi 32
首先,您可以使用另一个字符作为s///分隔符.命令
sed 's:ABC:DEF:g'
Run Code Online (Sandbox Code Playgroud)
相当于
sed 's/ABC/DEF/g'
Run Code Online (Sandbox Code Playgroud)
它将使您的命令更具可读性,因为您不必转义斜杠.
说,有些seds不支持字符转义等\t.例如,它在Mac OS X中发生在我身上.我的解决方案是按Control + V然后按Tab键:
sed 's:/:<Control+V><TAB character>:g'
Run Code Online (Sandbox Code Playgroud)
我的机器的结果是:
$ pwd
/Users/brandizzi/sandbox/demo/mydemo
$ pwd | sed 's:/: :g'
Users brandizzi sandbox demo mydemo
Run Code Online (Sandbox Code Playgroud)
但是,如果你的目的是把在AWK变量的所有路径的目录$1,$2等等.只是声明斜线是字段分隔符使用awk -F标志:
$ pwd
/Users/brandizzi/sandbox/demo/mydemo
$ pwd | awk -F / '{print $3 " " $5}'
brandizzi demo
Run Code Online (Sandbox Code Playgroud)
ssa*_*ota 17
试试awk:
awk '{gsub("/","\t",$0); print;}' filename
Run Code Online (Sandbox Code Playgroud)
使用 sed 用 TAB 替换 /:
sed 's/\//\'$'\t/g' filename.txt
Run Code Online (Sandbox Code Playgroud)
通常,将 \'$' 放在制表符 (\t) 和换行符 (\n) 之前。在 bash 中工作。
要提取目录名称:
就个人而言,我会使用 grok12 的答案。
awk -F'/' '{print $5}' filename.txt
Run Code Online (Sandbox Code Playgroud)
我找到了答案,对我来说,在这里.我有MacOSX所以我使用Control + v,然后使用Control + i.
sed -e 's/\/[CTR+V][CTR+I]/g' filename
Run Code Online (Sandbox Code Playgroud)
使用 + 作为分隔符
sed -e 's+/+\t+g'
echo 'path/to/something' | sed -e 's+/+\t+g'
// path to something
Run Code Online (Sandbox Code Playgroud)
编辑: 提取文件路径的更简单方法:
dirname /path/to/file.txt
#output /path/to
Run Code Online (Sandbox Code Playgroud)