設A另一個字替換的單詞,B,C,d是詞語正則表達式與在同一行上的unix
輸入文件:
..
A/B/C/D
W/B/C/Z
L/B/C/O
..
輸出文件:
..
A/B/C/A
W/B/C/W
L/B/C/L
..
替換word D
與word A
只有一行相同,只有當/B/C/
定界符存在於行中並且像其他行一樣明智
任何sed/awk/perl
oneliner要完成該操作
設A另一個字替換的單詞,B,C,d是詞語正則表達式與在同一行上的unix
輸入文件:
..
A/B/C/D
W/B/C/Z
L/B/C/O
..
輸出文件:
..
A/B/C/A
W/B/C/W
L/B/C/L
..
替換word D
與word A
只有一行相同,只有當/B/C/
定界符存在於行中並且像其他行一樣明智
任何sed/awk/perl
oneliner要完成該操作
你可以這樣做:
sed -re 's/^([^/]*)(\/B\/C\/)([^/]*)$/\1\2\1/' file
演示:
$ cat file
A/B/C/D
W/B/C/Z
L/B/C/O
$ sed -re 's/^([^/]*)(\/B\/C\/)([^/]*)$/\1\2\1/' file
A/B/C/A
W/B/C/W
L/B/C/L
這應該是關鍵。 的perl -p -e 'S/d/A/G'
在sed SED -e 'S/d/A /'
**的perl -p -e的#^(\ w +)(/ B/C /)\ w + \ S * $# \ 1 \ 2 \ 1#'** – tuxuday 2012-04-24 09:52:38
pearl.306> echo "A/B/C/D"|awk '{split($0,a,"/");print a[1]"/"a[2]"/"a[3]"/"a[1]}'
A/B/C/A
pearl.307>
另一種方式是:
pearl.309> echo "A/B/C/D" | awk -F"/" '{OFS="/"}{$NF=$1;print}'
A/B/C/A
pearl.310>
pearl.318> cat file1
A/B/C/D
W/B/C/Z
L/B/C/O
pearl.319> awk -F"/" '{OFS="/"}{$NF=$1;print}' file1
A/B/C/A
W/B/C/W
L/B/C/L
pearl.320>
我們可以使用分隔符對整個文件執行此操作!你可以請再次檢查我的問題 – user1228191 2012-04-24 09:52:10
是的當然..看我的編輯 – Vijay 2012-04-24 10:02:25
這是一個awk
解決方案:
awk -F/ -v OFS=/ '$2=="B" && $3=="C" {$4=$1}1' input.txt
這可能會爲你工作:
sed 's|^\(\(.\)/B/C/\).|\1\2|' file
如果A/B/C/D
是真實的話如wordA/wordB/wordC/wordD
,則:
sed 's/|^\(\([^/]*\)/wordB/wordC/\).*|\1\2|' file
perl -pe 's#(/B/C/)(.*)#$1$`#' file
這應該工作+
感謝您的答案!但對不起,我的問題會誤導你!你可以再次檢查問題! – user1228191 2012-04-24 09:48:28
@ user1228191:我改變了答案。 – codaddict 2012-04-24 09:58:43
完美!再次感謝:) – user1228191 2012-04-24 10:06:51