下面是示例文件,我想在最后一次出现斜杠(/)之后修剪最后一个字符,然后在它之后跟两个字符。
cat sample.txt
HOME_1, /u01/app/oracle/or121022
HOME_2, /u01/app/oracle/or112100881
HOME_3, /uo1/app/mysql/my588822222
我正在尝试这样的事情:
cat sample.txt | sed 's%/[^/]\.\.*$%/\.\.%'
预期产出:
HOME_1, /u01/app/oracle/or
HOME_2, /u01/app/oracle/or
HOME_3, /uo1/app/mysql/my
非常感谢任何帮助。
谢谢!
答案 0 :(得分:1)
记住捕获组中斜线后面的两个字符:
sed 's%\(/..\)[^/]*$%\1%'
[^/]*$
匹配字符串的其余部分直到行尾,当整个匹配仅被记住的部分替换时,它被删除。
答案 1 :(得分:0)
这是一个基于非正则表达式的awk解决方案:
awk -F/ -v OFS=/ '{$NF=substr($NF, 1, 2)} 1' file
/
使用字段分隔符,因此在$NF
中给出最后一部分,然后使用substr
我们得到前2个字符。
<强>输出:强>
HOME_1, /u01/app/oracle/or
HOME_2, /u01/app/oracle/or
HOME_3, /uo1/app/mysql/my
答案 2 :(得分:0)
awk '{sub(/[0-9]+$/,"",$2)}1' file
HOME_1, /u01/app/oracle/or
HOME_2, /u01/app/oracle/or
HOME_3, /uo1/app/mysql/my
一个awk示例,它删除了col $ 2末尾的数字。 但我们可以跳过这部分“,2美元”,它仍然有效。