[英]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
问题是,有些文件可能有不同的字母1A1
或1A2
如1K1
, 1K2
.....我想提出的条件$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
第三个字符是1
或2
( [1-2]
) $11
只能是229
或49
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.