awk'/ ^ /'空输出(内部完成命令)

时间:2013-10-15 09:14:46

标签: printing awk grep cat

cat /path/to/file  | awk '{if ('/^TCF/' || '/^FSTL/' ) print $0;}' > /path/to/output.txt

嗨! 这会产生一个空输出,但它可以在“textedit文档”上工作,但不能在“纯文本文档”上工作。除此之外,它没有什么不同,只是它不起作用。

cat /path/to/file  | awk '{if ($3=="TCF1" || $3=="FSTL7T2" || $3=="GLI3") print $0;}'

这个工作正常,但我希望所有名字都以TCF开头,而不仅仅是TCF1。

请帮忙!

3 个答案:

答案 0 :(得分:1)

而不是

cat /path/to/file  | awk '{if ('/^TCF/' || '/^FSTL/' ) print $0;}' > /path/to/output.txt

你可以使用

awk '/^TCF/ || /^FSTL/' /path/to/file > /path/to/output.txt

注意'/^TCF/'错误,它应该只有/^TCF/。另外,请避免使用cat,因为该文件可以作为awk的参数提供。最后,print $0awk的默认操作,因此您可以跳过它。

答案 1 :(得分:0)

这应该有效:

awk '/^TCF/||/^FSTL/' /path/to/file  >output.txt

你的陈述的问题是:

awk '{if ('/^TCF/' || '/^FSTL/' ) print $0;}'

应该是:

awk '{if ($0~/^TCF/ || $0~/^FSTL/ ) print $0;}'

答案 2 :(得分:0)

谢谢你们!它帮我解决了,但我最终得到了以下结论:

cat / path / to / file1 / path / to / file2 | awk'{if($ 3~ / ^ TCF / || $ 3~ / ^ GLI /)print $ 0;}'> /path/to/test1.txt

但是,你知道如何:

  1. 在test1.txt输出中包含file1中的第一行?
  2. 并且,如果TCF和GLI来自file1或file2,是否可以包含?