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

你好!这会产生一个空输出,但它确实适用于“文本编辑文档”,但不适用于此“纯文本文档”。除此之外,它没有什么不同,只是它不起作用。

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

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

请帮忙!

4

3 回答 3

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 $0是 的默认动作awk,可以跳过。

于 2013-10-15T09:17:07.867 回答
0

这应该有效:

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

你的说法的问题是:

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

应该:

awk '{if ($0~/^TCF/ || $0~/^FSTL/ ) print $0;}'
于 2013-10-15T09:18:40.377 回答
0

多谢你们!它帮助我解决了这个问题,但我最终得到了以下结果:

猫 /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,是否可以包括在内?
于 2013-10-15T23:05:02.947 回答