bash从文件中获取一个带引号的字符串,但仅在第N行

时间:2014-03-01 16:48:01

标签: bash sed

我知道这两个问题已被多次覆盖,但我无法想出如何将两个命令混合在一起:

在引用

之间获取字符串
sed 's/[^"]*"\([^"]*\)".*/\1/' "$file"

从文件中获取第2行

sed '2q;d' "$file"
非常感谢你的帮助。

编辑:

输入文件如下:

#!/bin/bash
# "/path/to/folder/with/file.ext"
some others lines with quoted string

输出

/path/to/folder/with/file.ext

3 个答案:

答案 0 :(得分:4)

Awk将是我首选的解决方案。

awk -F'"' 'NR==2{print $2}'

答案 1 :(得分:4)

您可以使用此sed组合2 sed命令:

sed '2s/[^"]*"\([^"]*\)".*/\1/p;d;q' file
/path/to/folder/with/file.ext

答案 2 :(得分:3)

您可以通过以下方式组合这两个命令:

sed -n '2s/[^"]*"\([^"]*\)".*/\1/p' filename
  • -n会禁止自动打印图案空间
  • {li> 2之前s导致替换在第2行执行
  • p打印当前模式空间

为了您的输入,它会产生:

/path/to/folder/with/file.ext