linux - grep 换行后的内容

标签 linux bash grep

我的文件sms.txt:

1 sender: 887645651201059711697
date:   15/02/04,08:07:08

Maaf, pulsa Anda tidak cukup untuk mengaktifkan Pkt Super Ngebut 11GB, 30hr, Rp55rb. Ayo isi pulsa di XL Center, ATM, Minimarket, Inet, m-Banking. Info 817

如何只打印短信内容?所以我希望输出是这样的:

Maaf, pulsa Anda tidak cukup untuk mengaktifkan Pkt Super Ngebut 11GB, 30hr, Rp55rb. Ayo isi pulsa di XL Center, ATM, Minimarket, Inet, m-Banking. Info 817

我尝试了 grep '\n.*' sms.txt 但没有成功。

最佳答案

我相信这可以满足您的需求:

$ awk '/^$/{f=1} f && /./{print;f=0}' sms.txt
Maaf, pulsa Anda tidak cukup untuk mengaktifkan Pkt Super Ngebut 11GB, 30hr, Rp55rb. Ayo isi pulsa di XL Center, ATM, Minimarket, Inet, m-Banking. Info 817

工作原理

  • /^$/{f=1}

    每次遇到空行时,标志 f 都会设置为 1。

  • f &&/./{print;f=0}

    如果标志 f 非零且当前行不为空,则打印当前行并将 f 重置为零。

    <

备选方案

正如 Jotne 在评论中所建议的,这里有两个实现相同目标的另外两个 awk 命令:

awk '!/./{f=1} f && /./{print;f=0}' sms.txt

awk '!NF{f=1} f && NF{print;f=0}' sms.txt

关于linux - grep 换行后的内容,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28490577/

相关文章:

grep 结果的 Bash 条件 'OR'

linux - 当上下文名称中有 '#' 符号时,ldap_explode_dn() 中的问题

c - Linux - c - 没有上下文切换和低开销的 ipc 通知?

linux - 从文件中提取文本+变量不起作用

linux - shm_unlink 从 shell ?

linux - 如何使用 grep(或其他 LSB 工具)计算 .po 中的空翻译?

arrays - 使用 grep 检查数组中是否存在多个 var

c - 我怎么知道 linux 系统调用是否线程安全?

linux - "Couldn' t stat 远程文件 : No such file or directory": Using FTP in shell script from *nix to Win

linux - 在 GNU/Linux 上显示 CGI 错误的日志文件