如何使用printf删除不需要的字符

时间:2016-03-06 20:35:24

标签: bash printf delimiter

echo "========= CHECKING Current Allocated Workspaces ========="
echo ""
echo "Allocated:"
grep $1 /etc/auto.indirect 
echo ""
echo "Windows Friendly Path:"
IFS=/ read -a frags < <(grep $1 /etc/auto.indirect) #set path components into array frags
frags[0]="${frags[0]%:}" #strip ":" off *-filer-ns
echo "$(IFS=\\ ;printf '\\\\%s' "${frags[*]}" ;)" #set IFS to \ to print frags \-separated

以下我设法格式化为:

========= CHECKING Current Allocated Workspaces =========

Allocated:

wsone-rtp    -rw,hard,intr,quota    filer-filer-ns:/workspace/wslocal010/user

Windows Friendly Path:

\\\wsone-rtp    -rw,hard,intr,quota    filer-filer-ns\workspace\wslocal010\user

我正在尝试找到一种方法来删除来自我正在调用的表的尾随信息。

我希望从所谓的内容中删除:

wsone-rtp    -rw,hard,intr,quota 

请记住,wsone-rtp的第一个条目会根据表中较早的用户调用而更改。 例如,用户A可以是:wsone-rtp -rw,hard,intr,quota 例如,用户B可以是:wstwo-rtp -rw,hard,intr,quota

我认为必须有一些方法可以从被调用字符串的开头删除x个字符?

理想的最终输出将转换:

wsone-rtp -rw,hard,intr,quota filer-filer-ns:/ workspace / wslocal010 / user

\\滤波器-滤波器纳秒\工作空间\ wslocal010 \用户

2 个答案:

答案 0 :(得分:1)

要删除字符串的X个第一个字符,可以使用cut。例如:

echo "a long string" | cut -c 5-
g string

答案 1 :(得分:0)

我还不太清楚你到底想做什么;但从每行的开头删除正好n个字符听起来很脆弱。如果您想要删除的某些选项发生变化({0}只是wsonewstwo具有相同数量的字符的巧合会怎么样。可能会有wsthree ?)。

如果你想要打印最后一个&#34;单词&#34;,如果路径不包含空格,你可以通过sed -r 's/.*[ ]+//管道(找到以空格结尾的最长序列,并将其替换为空;方括号内有一个凸起和一个标签。使用空格时,您必须依赖标记:字符串是否始终以filer-filer开头?然后你可以说's/\(.*\)filer-filer/filer-filer/'(找到以&#34结尾的字符串;文件管理器&#39;文件管理器&#34;并用#34; filer-filer&#34;替换它,你要保留它)。