4
A
回答
3
如果以數字開頭(第一行除外),您可以更智能一些,並在行前打印新行;
awk 'BEGIN{ORS="";} NR==1 { print; next; } /^[[:digit:]]/ { print "\n"; print; next; } { print; }'
awk的腳本:
BEGIN { ORS=""; } # default: no newline between output records
NR==1 { print; next; } # first line: print
/^[[:digit:]]/ { print "\n"; print; next; } # if starts with a digit: print newline before
{print;} # other lines (next; has not been called yet)
-1
使用 'sed的' A溶液:
輸入文件(infile中):
1 test
test
2 two
3 three
4 four
five
six
7 seven
eight
9 nine
'桑達' 程序(script.sed ):
/[0-9]\+/ {
: a
N
/\n[0-9]\+/ {
P
s/.*\n//
}
t a
}
y/\n//
執行:
$ sed -f script.sed infile
輸出:
1 test test
2 two
3 three
4 four five
six
7 seven eight
9 nine
0
這是非常簡單的使用sed來完成。考慮下面
$ cat numbered
1 abc
def
ghi
2 jkl
mno
3 pqr
4 stu
vxw
命令sed '/^[0-9]/{N; s/\n/ /;}' numbered
文件就可以了:
$ sed '/^[0-9]/{N; s/\n/ /;}' numbered
1 abc def
ghi
2 jkl mno
3 pqr 4 stu
vxw
它是如何工作的:首先,如果當前行不以數字開頭它驗證:
/^[0-9]/
/^[0-9]/
是address並僅匹配以數字開頭的行。如果某行與它匹配,則地址後面的命令將被執行。
在這種情況下,該命令是一個{
,它打開一個函數列表。函數列表將聚合兩個或更多的命令,就好像它們只有一個一樣。在這種情況下,我們在函數列表中有兩個命令。第一個是在N
命令:
N
此命令追加一個新行和下一行的模式空間。在當前週期後,下一行將不再考慮。下一個命令是s///
其通過空間替換換行符:
s/\n//
因此,通過所附N
換行符將由空間來代替。然後,我們只需要關閉功能列表}
。其結果將是:
/^[0-9]/{
N
s/\n//
}
既然我已經把所有的命令在一行爲了簡潔,功能列表中的命令應該用分號來分隔:
/^[0-9]/{N;s/\n/ /;}
注意,如果線路出發由一位數字跟隨以數字開頭的另一行,下一行將加入前一行,並且該命令將應用於該行。
5
相關問題
- 1. 刪除行以「;」開頭
- 2. 刪除到vim下一行的開頭?
- 3. 刪除行開頭的數字
- 4. 正則表達式:刪除不以數字開頭的行
- 5. 如何刪除所有不以某些字符開頭的行?
- 6. 如果以某個字開頭,則從數據框中刪除整行:R
- 7. 如何刪除頭,新行字符和「」
- 8. 文本文件:如果行不以數字開頭,如何刪除換行符? (在emacs或sed中)
- 9. 如何刪除一個以名字的第一個字符開頭的行?
- 10. 刪除所有以數字開頭的行使用python
- 11. 刪除以文本文件中特定數字開頭的行
- 12. 如何刪除以相同字符開頭的行?
- 13. 如何刪除以R中的特殊字符開頭的行
- 14. 如何刪除以「 - 」開頭的行加上3行後
- 15. 如何刪除所有不以..開頭的行.. [記事本++]
- 16. 如何刪除一行,有一個以空格開頭的字符串?
- 17. 刪除換行符如果行不以關鍵字
- 18. 如何刪除文件行開頭的數字
- 19. 如果行的一個單元格以某個字符串開頭,則VBA Excel將刪除行
- 20. 如果下一行以特定單詞開頭,則應該打印上一行
- 21. 刪除整行,如果有一個字
- 22. 刪除在rails字符串中以>開頭的行
- 23. 刪除任何以大寫字母開頭的行
- 24. 查找以字詞開頭並刪除的行
- 25. 刪除一個cookie,如果密鑰以PHP開頭X鍵
- 26. 刪除行如果H欄包含以下任一值 - VBA
- 27. 刪除文本文件中的行,如果它開頭
- 28. 如果鏈接不以htttp開頭,Firefox會刪除href屬性://
- 29. 使用sed刪除一行的開頭,直到大寫字
- 30. 如何刪除空格和新行,僅在textarea開頭
你可以用'tr'像'TR「\ n '''
Rahul
但我怎麼ch eck如果下一行沒有開始寬度數字?然後刪除以前的換行符。所有的事情可以分開,但我不能把它們結合起來。 – justahuman