使用不同的命令打印文本中除过第一行的所有行

最近的工作中需要在shell中用命令对一个文本的内容进行处理,前提是忽略文本的第一行,只处理其他行。思考之下发现tail、awk和sed这三个命令均可以实现这一功能,故在此做下记录。

  • 使用tail命令
  • 使用sed命令
  • 使用awk命令

下面就来具体说明下如何使用上述三个命令进行操作。

  1. 使用tail命令的 -n 参数

    tail命令的-n参数用来显示文本的最后k行,例如,要显示最后5行,可以使用

    seq 1 10|tail -n 5
    

    输出为:

    6
    7
    8
    9
    10

    在-n的参数值前加上+,用来显示从第k行到最后一行的内容

    seq 1 10|tail -n +5
    

    输出为:

    5
    6
    7
    8
    9
    10

    所以,要只显示除过第一行的其他所有行,可以指定参数-n +2,如下所示:

    head -n +2 your_file
    
  2. 使用awk命令的内置变量NR或者FNR

    在awk命令中,内部变量NR用来表示文件中已处理的输入记录数,内部变量FNR用来表示当前文件中已处理的记录数。
    当要处理的文件只有一个时,FNR和NR的作用相同。

    所以,要只显示除过第一行的其他所有行,可以指定NR!=1或者FNR!=1即可,如下所示:

    awk 'NR!=1 { print }' your_file
    

    或者

    awk 'FNR!=1 { print }' your_file
    
  3. 使用sed的-n参数和p替换标记或者使用删除命令

    3.1 使用-n参数和p标记

    sed命令的-n参数的作用是使sed命令不产生输出。

    sed的替换命令中p标记的作用是打印与替换命令中指定的模式匹配的行。

    -n参数和p标记结合使用,就可以打印出与指定模式匹配的行。

    所以,要只显示除过第一行的其他所有行,只需要打印从第二行到最后一行即可,行区间可以用2,$表示,
    其中$表示最后一行。

    sed -n '2,$p' your_file
    

    也可以直接指定不需要打印的行,使用1!p表示,如下所示:

    sed -n '1!p' your_file
    

    3.2 使用删除命令d

    sed的删除命令d,通过指定行区间,用来删除文本流中的特定行。

    所以,只要从文本内容中删除第一行而打印出其他行即可即可,如下所示:

    sed '1d' your_file
    
### 如何解决 UniApp 中 Sass `@import` 规则废弃的问题 随着 Dart Sass 的发展,`@import` 规则已被标记为弃用,并将在未来的版本中移除。因此,在开发过程中可能会遇到类似于 “Sass @import rules are deprecated and will be removed in Dart Sass 3.0.0.” 这样的警告信息[^1]。 #### 使用 `@use` 替代 `@import` Dart Sass 推荐使用 `@use` 来替代传统的 `@import` 方法来加载模块化样式文件。以下是具体的实现方式: ```html <style lang="scss"> @use './style/index.scss'; </style> ``` 通过上述代码片段可以引入指定路径下的 SCSS 文件[^3]。需要注意的是,`@use` 不仅会导入变量、函数和混合器,还会创建命名空间以便于管理不同模块中的同名定义。 #### 配置 Nuxt 或 VuePress (如果适用) 对于基于框架的应用程序(如 Nuxt),可以通过调整构建工具链设置减少此类错误提示。例如,在 `nuxt.config.ts` 文件里加入如下选项可能有助于缓解部分兼容性问题: ```typescript export default defineNuxtConfig({ vite: { css: { preprocessorOptions: { scss: { api: 'modern-compiler' } } } } }) ``` 此配置项告知 Vite 使用现代编译模式处理 CSS/SCSS 资源[^4]。尽管这是针对 Nuxt 提供的例子,但对于其他前端框架也有一定的借鉴意义。 #### 更新 Node.js 和重装依赖包 有时,环境因素也可能引发类似的错误消息。比如旧版 Node.js 可能无法完全支持最新版本的 npm 包或者其内部逻辑有所改变从而触发额外告警。此时建议尝试升级到 LTS 版本并清理缓存后再执一次完整的依赖安装过程: ```bash # 升级Node.js至LTS版本 nvm install --lts && nvm use --lts # 删除现有node_modules目录以及package-lock.json/yarn.lock锁文件 rm -rf ./node_modules package-lock.json yarn.lock # 安装最新的sass库单独测试效果 npm install sass # 正常恢复全部生产&开发所需组件 npm install ``` 以上操作能够有效排除因本地运时差异所造成的异常状况[^2]。 --- ### 注意事项 当切换到新的语法结构后,请务必确认原有项目的全局变量声明形式是否仍然适配新标准;必要情况下需重构这些共享资源以适应更严格的语义约束。 ---
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值