sed 取特定行 到末尾行

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了sed 取特定行 到末尾行相关的知识,希望对你有一定的参考价值。

特定行我用正则匹配某个字段 然后打印从匹配的这一行 一直到文件末尾行
用别的命令也行 只要能实现

1、通常用sed关闭SELINUXsed -i 's@SELINUX=enforcing@SELINUX=disabled@' /etc/sysconfig/selinux 将enforcing替换成disabled。

2、sed -i '10d' /etc/sysconfig/selinux删除 /etc/sysconfig/selinux第10行。

3、sed -i '11a hello world' /etc/sysconfig/selinux 在第11行后增加内容hello world。

4、sed -n '/ing/p' /etc/sysconfig/selinux 查询包含关键字ing所在所有行。

5、sed -i '2c haha' /etc/sysconfig/selinux 将第二行整行替换成haha,就完成了。

参考技术A 当然能实现,但你没说你要匹配什么字段。
sed -n '/regexp/,$p' file.txt

其中,regexp就是你的正则表达式;$表示末尾行;p表示打印。本回答被提问者采纳

使用 sed 在文件中的每一行末尾附加字符串会导致未引用的换行错误 [关闭]

【中文标题】使用 sed 在文件中的每一行末尾附加字符串会导致未引用的换行错误 [关闭]【英文标题】:Append string at the end of each line in a file with sed causes unquoted newline error [closed] 【发布时间】:2021-09-09 15:27:21 【问题描述】:

我正在尝试在使用 psql 加载到 Postgres 之前将 job_id 字段附加到 CSV 文件。这应在 Python 脚本中执行。

cmd = f""" \
psql con -c "\COPY raw.tablename FROM PROGRAM 'sed ''s/.*/&,\"job_id\"/'' /airflow/stage/test-job_id/filename' HEADER CSV"
"""

result = subprocess.run(cmd, shell=True, executable='/bin/bash', stderr=subprocess.PIPE)

以上导致以下记录的错误。

[2021-06-27 00:35:08,527] logging_mixin.py:104 INFO -         psql postgres://user:password@10.0.0.15:5432/test -c "\COPY raw.testdata FROM PROGRAM 'sed ''s/.*/&,"20210626T155818"/'' /airflow/stage/test-20210626T155818/testdata.csv' HEADER CSV"
[2021-06-27 00:35:08,568] logging_mixin.py:104 INFO - ERROR:  unquoted newline found in data
HINT:  Use quoted CSV field to represent newline.

在没有上述字符串附加操作的情况下加载文件将是成功的。在不影响换行符的情况下,将字符串附加到每一行的正确方法是什么?

【问题讨论】:

【参考方案1】:

您的输入文件使用 DOS 行结束约定,即在每行末尾都有 cr-lf 对。 \COPY 处理这个罚款只要它是一致的,但 sed 没有。它会转换您的文件,以便将 job_id 插入到 crlf 之间。

【讨论】:

使用 dos2unix 预处理对其进行了整理。感谢您在问题结束之前足够快地回答。

以上是关于sed 取特定行 到末尾行的主要内容,如果未能解决你的问题,请参考以下文章

sed 命令简单使用方法

[sed] 取文件指定行范围的内容

如何使用 sed 删除文件的最后 n 行

Linux--sed命令

Shell编程之正则表达式三剑客——sed工具

sed