2017-08-03 138 views
0

我知道我可以用awk 'NR==10' < 1.txt打印第10行的文本文件。如何使用awk或sed打印兩行相鄰的行?

我如何格式化它像::

10日線:: 14日線

11號線:: 15號線

16日線::行18

蔭舒適兩方式awk或sed。請幫忙 ?

+1

什麼是落後10,11和16的邏輯? – anubhava

+1

一個很好的問題將會有一小組樣本數據,來自該輸入的期望輸出,當前代碼/輸出/錯誤消息以及關於爲什麼事情不起作用的想法。此外,在每行代碼/數據/錯誤消息的前面使用4個空格,或者高亮顯示一段文本,並使用編輯框左上角的格式化工具將代碼/數據/輸出格式化。請閱讀,http://stackoverflow.com/help/how-to-ask,http://stackoverflow.com/help/dont-ask,http://stackoverflow.com/help/mcve,也許http:/ /stackoverflow.com/tour。祝你好運。 – shellter

+0

有沒有邏輯@anubhava其實問題是打印行5,6,7,8和行10,11,12,13在他們面前 – mcjoshi

回答

2

您可以使用awk就象這樣:

awk 'NR ~ /^1[016]$/{a[NR]=$0} NR==14||NR==15{print a[NR-4] " : " $0} 
    NR==18{print a[NR-2] " : " $0}' file 

Line 10 : Line 14 
Line 11 : Line 15 
Line 16 : Line 18 

如果文件是這樣的:

cat file 

Line 1 
Line 2 
Line 3 
Line 4 
Line 5 
Line 6 
Line 7 
Line 8 
Line 9 
Line 10 
Line 11 
Line 12 
Line 13 
Line 14 
Line 15 
Line 16 
Line 17 
Line 18 
Line 19 
Line 20 
+0

它不能解決我的問題。更重要的是存在格式化問題。 – mcjoshi