2017-12-18 78 views
1

這個文件運行以下命令grep -r "TESTPROGS/" /home/am/test.txt過濾掉文本刪除目錄,只留下文件

AMPROGS/ 
AMPROGS/TqaWhkhiCx8ymy8lIR2p.SH 
AMPROGS/iOryQxYtZwhkl0x7CcmW.SH 
AMPROGS/a14KbHWjbnWehzkmDWuv.SH 
TESTPROGS/ 
TESTPROGS/HRH7B76fogxwX6zEe7w8.SH 
TESTPROGS/m0np3yEbpplqk36wVJ1l 
TESTPROGS/t8ZCuJMgZO9accbjoDnp 

返回以下結果:

TESTPROGS/ 
TESTPROGS/HRH7B76fogxwX6zEe7w8.SH 
TESTPROGS/m0np3yEbpplqk36wVJ1l 
TESTPROGS/t8ZCuJMgZO9accbjoDnp 

我怎麼會現在去掉TESTPROGS /完全,所以我有這樣的:

HRH7B76fogxwX6zEe7w8.SH 
m0np3yEbpplqk36wVJ1l 
t8ZCuJMgZO9accbjoDnp 
+0

在'Awk'的另一種方法與下面的答案一起 - 'AWK「/ TESTPROGS \ // {GSUB(/ TESTPROGS \ // 「」);如果(NF)打印}'文件' – Inian

回答

4

Wuith GNU的grep:

grep -Po 'TESTPROGS/\K.*' /home/am/test.txt 

輸出:

 
HRH7B76fogxwX6zEe7w8.SH 
m0np3yEbpplqk36wVJ1l 
t8ZCuJMgZO9accbjoDnp 

\K:丟棄已經匹配部分

5

使用awk

awk -F'/' '$1=="TESTPROGS" && $2 != "" {print $2}' /home/am/test.txt 

-F/將輸入行分割爲由/分隔的字段。 $1=="TESTPROGS"檢查第一個字段是否等於TESTPROGS。如果這是真的,第二個字段不是空的,它將打印第二個字段。

1

的另一種方法:

for line in $(grep -r "TESTPROGS/" /home/am/test.txt); do basename "${line}"; done 
3
awk '/TESTPROGS\/.+/' file 

TESTPROGS/HRH7B76fogxwX6zEe7w8.SH 
TESTPROGS/m0np3yEbpplqk36wVJ1l 
TESTPROGS/t8ZCuJMgZO9accbjoDnp 

awk -F'/' '/TESTPROGS\/.+/{print $2}' filterout.awk 

HRH7B76fogxwX6zEe7w8.SH 
m0np3yEbpplqk36wVJ1l 
t8ZCuJMgZO9accbjoDnp 
相關問題