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 插入到 cr
和 lf
之间。
【讨论】:
使用 dos2unix 预处理对其进行了整理。感谢您在问题结束之前足够快地回答。以上是关于sed 取特定行 到末尾行的主要内容,如果未能解决你的问题,请参考以下文章