我需要使用 grep -P 正则表达式来查找和替换 bash 脚本中的两列



如果我有一个列表,例如:

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

相关内容

  • 没有找到相关文章

最新更新