我会诚实地说,这里有一些类似的问题,我不知道如何解释答案。任何帮助,将不胜感激。我有一个这样的字符串:
340,A,T,A,A,T,T,A,T,T,T,T,T,A,A,A,A
我想删除第n个逗号之后的所有内容,在这个例子中它可能是第5个逗号,但实际上它将是第170个。
我试过了:
sed -i.back 's/,.*170//'
和此:
's/((?:[^,],){170}).((\s+\S+).*){1,}/$1/g'
虽然很明显我不知道我在做什么,因为第一个重现整个原始文件而第二个没有产生输出。
答案 0 :(得分:4)
简单本身:(请注意,最后的逗号是必需的。)
cut -f1-170 -d,
答案 1 :(得分:3)
使用awk你可以这样做:
s='340,A,T,A,A,T,T,A,T,T,T,T,T,A,A,A,A'
awk -v n=5 'BEGIN{FS=OFS=","} {NF=n+1; $(n+1)=""} 1' <<< "$s"
340,A,T,A,A,
或使用sed
:
sed -E 's/^(([^,]*,){5}).*/\1/' <<< "$s"
340,A,T,A,A,
答案 2 :(得分:0)
这可能适合你(GNU sed);
sed 's/,/&\n/5;P;d' file
在第n个,
打印图案空间中的第一行后插入换行符,然后删除其他所有内容。