Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/kubernetes/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
尝试在sed或awk中使用变量_Awk_Sed_Grep_Fastq - Fatal编程技术网

尝试在sed或awk中使用变量

尝试在sed或awk中使用变量,awk,sed,grep,fastq,Awk,Sed,Grep,Fastq,我有两个单独的文本文件,每个文件的格式完全相同。我可以grepFILE1.txt查找特定的搜索词,并输出每个匹配项的行号。行号以数字顺序输出到文件或变量 我想使用每个行号,并将该行从FILE2.txt以数字顺序打印到单个OUTPUT.txt。有人知道用awk或sed来实现这一点的方法吗 我有一个字符串变量$linenumbers,其值为25 26 27 28 我使用以下命令: 对于以$linenumber表示的i;do sed-n“/$I/p”$I test\u read2.fastq>>tes

我有两个单独的文本文件,每个文件的格式完全相同。我可以grep
FILE1.txt
查找特定的搜索词,并输出每个匹配项的行号。行号以数字顺序输出到文件或变量

我想使用每个行号,并将该行从
FILE2.txt
以数字顺序打印到单个
OUTPUT.txt
。有人知道用
awk
sed
来实现这一点的方法吗

我有一个字符串变量$linenumbers,其值为25 26 27 28

我使用以下命令:

对于以$linenumber表示的i;do sed-n“/$I/p”$I test\u read2.fastq>>test.fastq;完成了

我犯了错误

sed:无法读取25:没有这样的文件或目录

sed:无法读取26:没有这样的文件或目录

sed:无法读取27:没有这样的文件或目录

sed:无法读取28:没有这样的文件或目录

如果我逐个执行这个sed命令,我可以从文件中提取行号25、26、27和28,并使用以下命令将其打印到文件中

sed-n“25p”测试\u read2.fastq>>test.fastq

我想用variable替换“25p”,这样它就可以从文件中拉出多行(25,26,27,28),而不必逐个执行此操作…

尝试以下操作:

grep -n interesting FILE1.txt | cut -d: -f1 | while read l
do
   sed -n "$l p" FILE2.txt
done
例如:

$ cat FILE1.txt 
foo
bar
baz
$ cat FILE2.txt 
qux
quux
quuux
$ grep -n bar FILE1.txt | cut -d: -f1 | while read l; do sed -n "$l p" FILE2.txt; done
quux

不知道你到底想做什么。如果要打印
文件
中定义的
,可以执行
awk'NR==FNR{a[$0];next}FNR在'lines文件

测试:


请小心替换和(双)引用
YourPattern

请向我们展示一些您尝试过的代码。@user3406833,给出一些输入和输出?感谢您的回复!我将您的awk命令与以下命令一起使用:>awk'NR==FNR{a[$0];next}FNR位于“$linenumbers test_read2.fastq”中。这给了我一个错误:awk:无法打开25(没有这样的fie或目录)。这很奇怪,因为25是我试图从test_read2.fastq文件中检索的行号。我假设这些行存储在一个文件中。如果
$linenumbers
是保存行号的变量,那么您应该使用进程替换:
awk'NR==FNR{a[$0];下一个}FNR在“谢谢”!!!!!成功了!!!我也尝试了你的第一个建议,用一个文件,这也奏效了。。。你结束了我一天来对这个答案的探索!
$ cat lines
1
3
7
$ cat file
a
b
c
d
e
f
g

$ awk 'NR==FNR{a[$0];next}FNR in a' lines file
a
c
g
sed -n "` grep -n 'Yourpattern' File1.txt | sed 's/:.*/p/'`" File2.txt