如果我有一个列表,例如:
5 chr1
5 chr1
5 chr2
3 chr5
如何使用 grep -P 切换列 1 和列 2 的位置?
如果我使用此行:
grep -P "(w+)t(w+)" test.txt
要捕获文本,我将如何替换它?
在awk中这样做更好(更容易):
awk '{a=$1; $1=$2; $2=a}1' OFS='t' file
chr1 5
chr1 5
chr2 5
chr5 3
更简单的是:(感谢@BrenoZan)
awk '{print $2"t"$1}' file
你可以这样做
grep -oP "w+" file | rev | paste - - | rev
但你不会
你可以像@anubhava提到的那样使用awk(我喜欢awk),它会正常工作,但如果要更改文件内容,请尝试 sed...
sed 's/([^ ]+)s*(.*)$/2t1/' -i file
with pure shell。
while read -r a b X; do echo $b $a; done < test.txt