用正则表达式从txt文件中提取Grep内容

时间:2019-04-18 07:35:13

标签: grep

我在txt文件中有一个看起来像这样的列表。

date

我想要一个脚本,该脚本为我提供以下输出:

  

汤姆·乔纳斯·菲利普·库古

我一直在寻找这样的东西:

let uploadedFiles = await sails.upload(inputs.image, {/* custom adapter config */});

但是我还没到那儿,根本没有输出。

4 个答案:

答案 0 :(得分:3)

  1. 提取第二个字段
  2. 用空格替换换行符
cat <<EOF |
10.9.0.18,tom,34.0.1.2:44395,Thu Apr 18 07:14:20 2019
10.9.0.10,jonas,84.32.45.2:44016,Thu Apr 18 07:16:06 2019
10.9.0.6,philip,23.56.222.3:55202,Thu Apr 18 07:16:06 2019
10.9.0.26,coolguy,12.34.56.7:53316,Thu Apr 18 07:16:06 2019
EOF
cut -d, -f2 | tr '\n' ' '

答案 1 :(得分:1)

您没有得到输出,因为grep不返回任何内容(您不需要perl正则表达式)。

您还需要选择第二个字段:

grep '^10\.9\.0\.' data.txt | cut -d, -f

答案 2 :(得分:1)

如果选择awk,则可以尝试:

awk -F, '{printf "%s ", $2} END {print ""}' file.txt

{printf "%s ", $2禁止使用默认的新行,而是使用空格。

END {print ""}将在完成后添加新行

答案 3 :(得分:0)

如果要多行输出,这是正确的答案:

$ awk -F, '/^10\.9\.0/{print $2}' file
tom
jonas
philip
coolguy

或单身:

$ awk -F, '/^10\.9\.0/{o=o s $2; s=OFS} END{print o}' file
tom jonas philip coolguy

您需要对.进行转义,因为它们代表了正则表达式中的任何字符,并且您无需在正则表达式的末尾添加.*,因为它会字面匹配“还是什么都没有。”