awk手册指出,-v FS和-F都是设置字段分隔符的等效方法。
可以在命令行上设置FS。使用-F' argument to do so.
(...)
The value used for the argument to-F‘的处理方式与为内置变量FS分配任务的方式完全相同。
但是,我注意到,如果将其设置为空字符串,则会有不同之处,这是不一样的。在我的GNU Awk 4.1.1上测试。
这样做是可行的:
$ awk -F, '{print $2}' <<< "a,b,c"
b
$ awk -v FS=, '{prin
我有两个列的文件。如果两个文件的第一和第二列相等,则需要打印第二个文件的内容。例如:
file1
Name1 123 blabla
Name1 456 bla
Name3 777 s
file2
Name1 123 something more
Name2 456 some words
Name4 111 no
Desired output:
Name1 123 something more
我编写了这段代码,但它只适用于一列(本例中的第二列):
awk 'BEGIN{FS=OFS="\t"} NR == FNR {f[$2]; next;} $2 in f{
我想知道有没有人能帮我解决我遇到的问题?我是Linux的新手,在这个阶段,我发现awk用户指南很难读懂。
假设file.txt包含以下内容:
group position
A 1
A 2
A 5
A 8
B 23
B 556
B 778
C 1
我想在文件中搜索给定的列组合(比方说A组,位置1),然后返回原始位置,并在其旁边的列中返回下一行的位置。
例如。
搜索:A&1返回:1 2
使用grep,我可以提取…下面的代码行
输入:
grep -w -A1 'A.2' fil
我尝试在awk脚本中使用此语句(在包含单独代码的文件中,所以不是内联),脚本名称: print-table.awk
BEGIN {FS = "\t";OFS = "," ; print "about to open the file"}
{print $0}
END {print "about to close stream" }
在shell中以这种方式运行它
awk -f print-table.awk table
当table是以制表符分隔的文件时,我的目标是在外部函数中声明字段分隔符(FS)和输出字段分隔符(OFS),并从
在下面的awk中,我跳过了以#开头的行,并试图根据4个特定的列在两个文件之间找到匹配的行,如果一行不匹配,则输出它缺少的文件和行。谢谢:)。
file1
##....
#....
chr1 1013466 . T TA 11438.1 PASS
chr1 1013490 . C G 14137 PASS
chr1 1013600 . T TAA 1140 PASS
file2
##...
#....
chr1 1013466 . T TA 10914 PASS
chr1 1013490 . C G
假如我有这样的一排:
LOCUS NG_052676 31180 bp DNA linear PRI 08-AUG-2017
正在由match($0, /LOCUS\s*([^\n]*)/, o)选择的
并由print o[1]打印
但是,由于空白,这将选择/打印整行:
NG_052676 31180 bp DNA linear PRI 08-AUG-2017
如何将前两个字符串捕获为数组,o,以便: o1 = NG_052676和o2 = 31180?
我不想改变FS变量,因为它被用来做其他的