我的档案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
但没有效果。
答案 0 :(得分:2)
我相信这可以做你想要的:
$ 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
答案 1 :(得分:1)
尝试sed:
sed -r '/^[0-9]+ sender:/d;/^date:\s+/d;/^\s*$/d' sms.txt >textonly.txt
以与日期和发件人标题匹配的模式开头的行将被删除,以及仅包含空格的行。
答案 2 :(得分:0)
使用sed
sed -r '/^( *[0-9]* sender:| *date:| *$)/d' sms.txt
编辑:或
sed -nr '/^( *[0-9]* sender:| *date:| *$)/! {p}' sms.txt
答案 3 :(得分:0)
对我来说,你可以使用grep执行以下操作。
grep -Eo '^[^:]+$' sms.txt