2013-02-12 5 views
2

Я пытаюсь использовать awk для вытаскивания определенной подстроки в пути к файлу. Учитывая, что у меня есть что-то, входящее в команду awk как a/workspace/folder.fold/secondfolder/file.ext, как я могу получить его как folder.fold/secondfolder/file.ext?Match "/" Once In Awk

Я пытался сделать

| awk -F "/" '{ print $2 }' 

но это только дает мне folder. Любая помощь определенно оценена, поскольку я очень новичок в awk.

Редактировать: На самом деле это происходит как a/workspace/folder.fold/secondfolder/file.ext. Дополнительный a/ получает тянет как 1 доллар в моих попытках.

ответ

2

awk не лучший инструмент для этого, но вы можете сделать:

awk '{ sub("/[^/]*/","")}1' 
+0

Всего это (а Grep из ртутных команд) в настоящее время выполняются в терминале, так что мое понимание было то, что я имел только AWK и, возможно, СЭД работать. Есть ли лучший способ сделать это? – Lark

+0

Если вы фильтруете поток, вы можете сделать 'cut -d/-f3-' или 'sed 's @/[^ /] */@@''. –

+0

'cut' отлично работает! Благодаря! – Lark

1

некоторые из способов для достижения желаемых результатов являются

echo '/workspace/folder.fold/secondfolder/file.ext' | awk -F/ '{for(i=3;i<=NF;i++) printf("%s" ,$i FS)} 

echo '/workspace/folder.fold/secondfolder/file.ext' | cut -d/-f 3- 
1

вы можете попробовать СЭД

sed -re '[email protected]([^/+]/)([^/]+/)@@' temp.txt 

a/workspace/folder.fold/secondfolder/file.ext

Выход

folder.fold/secondfolder/file.ext