我有这些行的文件
G8 = P(G1,G3)
G9 = P(G3,G4)
G12 = P(G2,G9)
G15 = P(G9,G5)
G16 = P(G8,G12)
G17 = P(G12,G15)
我需要输出
G1,G3
G3,G4
.....
如何使用sed / grep命令或使用perl?
答案 0 :(得分:1)
sed -e 's/.*(//' -e 's/).*//' filename
或者更简洁:
sed 's/.*(//;s/)//' filename
答案 1 :(得分:1)
perl -nE 'say /\( (.+?) \)/x' file
答案 2 :(得分:0)
cat your-file-name.txt | cut -d'(' -f2 | cut -d')' -f1
你甚至不需要grep / sed!
答案 3 :(得分:0)
这可能适合你(GNU sed):
sed 's/.*(\(.*\)).*/\1/' file
答案 4 :(得分:0)
使用awk
awk -F"[()]" '{print $2}' file
G1,G3
G3,G4
G2,G9
G9,G5
G8,G12
G12,G15
答案 5 :(得分:0)
使用PERL的两种可能的解决方案
# Assuming a relation between the Char letter
$str =~ s/(G)\d+?\ *?=\ P\((\1\d+?,\ *?\1\d+?)\)/$2/;
# A greedy solution. Just capturing the content of the paranthesis.
$str =~ s/.*?\((.*?)\).*?/$1/;
答案 6 :(得分:0)
如果你有Ruby
# ruby -ne 'puts $_.scan(/\((.*)\)/)' file
G1,G3
G3,G4
G2,G9
G9,G5
G8,G12
G12,G15