gpt4 book ai didi

linux - 使用 sed 或 awk 搜索包含特殊字符的行

转载 作者:塔克拉玛干 更新时间:2023-11-03 00:13:54 27 4
gpt4 key购买 nike

Linux中有没有命令可以帮我找到以“*”开头,包含特殊字符“|”的行 例如

* Date       | Auteurs

最佳答案

只需使用:

grep -ne '^\*.*|' "${filename}"

或者如果你想使用 sed:

sed -n '/^\*.*|/{=;p}' "${filename}" | sed '{N;s/\n/:/}'

或 (gnu) awk 等价物(需要反斜杠管道):

awk '/^\*.*\|/' "${filename}"

地点:

  • ^ : 行首
  • \*:文字*
  • .*:零个或多个通用字符(不是换行符)
  • | :文字管道

注意:“${filename}”:我假设您在脚本中使用命令,目标文件在双引号变量中传递为“${文件名}”。在 shell 中,只需使用文件的实际名称(或文件路径)即可。

更新 (行号)

修改上述命令以获取匹配行的行号。使用 grep 很简单,只需添加 -n 开关:

grep -ne '^\*.*|' "${filename}"

我们得到这样的输出:

81806:* Date       | Auteurs

要从 sedawk 获得完全相同的输出,我们必须使命令稍微复杂一点:

awk '/^\*.*\|/{print NR ":" $0}' "${filename}"
# the = print the line number, p the actual match but it's on two different lines so the second sed call
sed -n '/^\*.*|/{=;p}' "${filename}" | sed '{N;s/\n/:/}'

关于linux - 使用 sed 或 awk 搜索包含特殊字符的行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33276225/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com