[英]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.