簡體   English   中英

awk選擇列的一部分(3個字符中的第3個)

[英]awk select part of column (3rd of 3 characters)

我有很多文件,在其中選擇以下幾列

cat test.txt | awk ' {
if ($11 ~ /229/ && $5 ~ /1A1/) 
{print $0, ($3 + 1) }         
if ($11 ~ /229/ && $5 ~ /1A2/) 
{print $0, ($3 - 1) }
if ($11 ~ /49/ && $5 ~ /1A1/)  
{print $0, ($3 - 1)}
if ($11 ~ /49/ && $5 ~ /1A2/)
{print $0, ($3 + 1) }
}' > output

問題是,有些文件可能有不同的字母1A11A21K11K2 .....我想提出的條件$5 ~(/1A2/) or $5 ~(/1A1/)更多的“一般”我嘗試了類似的事情

$5 ~(/??1/)
$5 ~(/??2/)

到目前為止沒有成功。 有人可以幫我嗎? 請注意,我還需要將選擇標准保持在11美元

cat test.txt | awk ' {
    if ($11 ~ /229/ && $5 ~ /??1/)
....

您應該嘗試使用正則表達式,在這種情況下,您可以使用以下簡單的awk程序:

awk ' {
if ($11 ~ /(229|49)/ && $5 ~ /1[A-Z][1-2]/) 
{print $0, ($3 + 1) }}' test.txt > output

我假設:

  • $5第二個字符是大寫字母或馬約斯字母( [AZ] ),
  • $5第三個字符是12[1-2]
  • $11只能是22949

暫無
暫無

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

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