簡體   English   中英

我需要使用grep -P正則表達式來查找和替換bash腳本中的兩列

[英]I need to use grep -P regular expression to find and replace two columns in a bash script

如果我有以下列表:

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*\(.*\)$/\2\t\1/' -i file

與純殼。

while read -r a b X; do echo $b $a; done < test.txt

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM