awkで特定の文字を切り取り、印刷する

awkで特定の文字を切り取り、印刷する

このデータはファイルにあります。

one,1,/home/steven/Transformation/users.txt
two,2,/home/steven/Transformation/users.txt

私は次の出力が欲しい:

one,1,users.txt
two,2,users.txt

この問題を解決するためにawkを使用する方法

答え1

awk -F '[,/]' '{print $1","$2","$NF}'

または使用OFS

awk -F '[,/]' -v OFS=',' '{print $1, $2, $NF}'

答え2

以下も使用できますsed

sed 's;/.*/;;' file

または:cutsed

cut -d / -f1,5 file | sed 's;/;;'

cutそしてtr

tr '/' ',' < file | cut -d , -f1,2,7

出力:

one,1,users.txt
two,2,users.txt

~のためこの入力:

/one,/1,/home/steven/Transformation/users.txt 
/two,/2,/home/steven/Transformation/users.txt

注文する:

sed -E 's;(.*,)/.*/;\1;' file

出力:

/one,/1,users.txt 
/two,/2,users.txt

答え3

方法1

awk -F "," 'OFS=","{print $1,$2,substr($NF,29)}'  filename

方法2:

sed "s/\/.*\///g" filename

方法3:

#!/usr/bin/python
import re
k=re.compile(r'/.*/')
p=open('p.txt','r')
for i in p:
    print re.sub(k,"",i).strip()

関連情報