A、B、C、D を単語とする
入力ファイル :
..
A/B/C/D
W/B/C/Z
L/B/C/O
..
出力ファイル:
..
A/B/C/A
W/B/C/W
L/B/C/L
..
行に区切り文字が存在し、他の行についても同様の場合にのみ、同じ行の 1 つに word D
置き換えます。word A
/B/C/
それsed/awk/perl
を達成するためのワンライナー
これは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
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>
できるよ:
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 -pe 's#(/B/C/)(.*)#$1$`#' file
これは動作するはずです +