我想從DbgView日誌文件中刪除前兩列(我不感興趣)。我似乎無法找到一個從列3開始直到行結束的例子。請注意,每一行的列數都是可變的。如何打印第三列到最後一列?
回答
...或者簡單的解決方案:cut -f 3- INPUTFILE
只是添加正確的分隔符(-d)和你有同樣的效果。
請注意,這僅適用於所有列之間的分隔符完全相同的情況。例如,不能使用帶\ d +等分隔符的cut。 (我知道的) – 2010-01-13 21:11:48
當問題標題爲awk時,接受awk以外的答案是不合適的。如果人們需要它用於awk腳本呢?這個答案應該只是一個評論。 – syaz 2010-11-01 04:17:53
@SyaZ:通常我會同意,但是在這個板子上的'無償awk'的數量,我認爲這是需要展示一個替代方式來完成這個任務。如果有人向你展示了一種更簡單快捷的方式來完成同樣的任務,你會不會感激?也許海報認爲awk是唯一能夠做到這一點的方法,因爲「沒有不正確,但肯定可以改進」其他問題的答案。 – Marcin 2010-11-01 13:24:54
awk '{for(i=3;i<=NF;++i)print $i}'
awk'{for(i = 3; i <= NF; ++ i)print $ i}'更加緊湊。 :) – user172818 2009-10-21 16:58:31
謝謝,lh3。我只是在複製和粘貼gawk手冊。 :) – 2009-10-21 17:07:13
從。從。從。 – 2009-10-21 17:08:14
Jonathan Feinberg的答案在單獨的行上打印每個字段。您可以使用printf
重建同一行上的輸出記錄,但也可以將字段向左跳轉。
awk '{for (i=1; i<=NF-3; i++) $i = $(i+3); NF-=3; print}' logfile
約以下行內容:基於@ ghostdog74建議
awk '{$1=$2=$3=""; print}' file
。煤礦應該表現更好,當你過濾行,即:
awk '/^exim4-config/ {$1=""; print }' file
該命令在每行的開始處放置一個空格。 – Nathan 2014-01-15 20:00:12
awk '{ print substr($0, index($0,$3)) }'
我對此有些遲,但對於第一個或第二個字段等於第三個(例如,3 2 3 4 5) – 2011-10-25 01:46:38
有點晚了這裏,但沒有上面似乎工作。試試這個,使用printf,在每個之間插入空格。我選擇了最後沒有換行。
awk '{for(i=3;i<=NF;++i) printf("%s ", $i) }'
awk -v m="\x0a" -v N="3" '{$N=m$N ;print substr($0, index($0,m)+1)}'
這扒什麼是特定領域NR之前,N,並打印該行的所有其餘部分,包括現場nr.N並保持原有的間距(不格式化)。如果字段的字符串也出現在行中的其他位置,這不是問題,這是daisaa的答案。
定義一個函數:
fromField() {
awk -v m="\x0a" -v N="$1" '{$N=m$N; print substr($0,index($0,m)+1)}'
}
而且使用這樣的:
$ echo " bat bi iru lau bost " | fromField 3
iru lau bost
$ echo " bat bi iru lau bost " | fromField 2
bi iru lau bost
輸出保持的一切,包括尾隨空格
行之有效的文件,其中 '/ n' 爲記錄分隔符,這樣你就不會在行內出現新的字符。如果您想與其他記錄分隔符一起使用,請使用:
awk -v m="\x01" -v N="3" '{$N=m$N ;print substr($0, index($0,m)+1)}'
例如。只要不使用十六進制字符nr,幾乎可以與所有文件一起使用。 1行內。
awk '{for (i=4; i<=NF; i++)printf("%c", $i); printf("\n");}'
打印從第四場中它們在原始文件
的記錄,這不起作用。對不起,這不是很正確的答案。它太具體了,但我不知道如何刪除它 – Massimo 2014-11-14 10:18:03
相同的順序開始到最後一個字段記錄下列AWK命令打印在的端部的每一行的最後N場行打印新行字符:
awk '{for(i=6; i<=NF; i++){printf("%s ", $i)}; printf("\n"); }'
查找下面,列出了/ usr/bin目錄的內容,然後保存在最後3行,然後用awk打印每行的最後4列的例子:
$ ls -ltr /usr/bin/ | tail -3
-rwxr-xr-x 1 root root 14736 Jan 14 2014 bcomps
-rwxr-xr-x 1 root root 10480 Jan 14 2014 acyclic
-rwxr-xr-x 1 root root 35868448 May 22 2014 skype
$ ls -ltr /usr/bin/ | tail -3 | awk '{for(i=6; i<=NF; i++){printf("%s ", $i)}; printf("\n"); }'
Jan 14 2014 bcomps
Jan 14 2014 acyclic
May 22 2014 skype
Perl的解決方案:
perl -lane 'splice @F,0,2; print join " ",@F' file
使用這些命令行選項:
-n
環圍繞輸入文件的每一行,不自動打印每行-l
在處理之前刪除換行符,並將它們添加回af terwards-a
autosplit模式 - 將輸入行分割到@F數組中。默認爲分裂上的空白-e
執行Perl代碼
splice @F,0,2
乾淨地移除列0和1從@F陣列
join " ",@F
加入@F數組的元素,使用每個元素之間的空格
如果輸入文件是逗號分隔的,而不是空格分隔的,請使用-F, -lane
Python的解決方案:
python -c "import sys;[sys.stdout.write(' '.join(line.split()[2:]) + '\n') for line in sys.stdin]" < file
如果只有約忽略了前兩個字段,如果屏蔽這些字段(如一些答案上面做的),當您不想要一個空間:
awk '{gsub($1" "$2" ",""); print;}' file
在bash,那麼你可以使用下面的語法與位置參數:
while read -a cols; do echo ${cols[@]:2}; done < file.txt
瞭解更多:Handling positional parameters在打擊黑客維基
awk '{$1=$2=""}1' FILENAME | sed 's/\s\+//g'
前兩列被清除,sed
刪除前導空格。
awk '{a=match($0, $3); print substr($0,a)}'
首先找到第三列開始位置。 對於substr,您將打印從位置(本例中爲a)開始的整行($ 0)到行尾。
在AWK列稱爲字段,因此NF是關鍵
所有行:
awk -F '<column separator>' '{print $(NF-2)}' <filename>
只有第一行:
awk -F '<column separator>' 'NR<=1{print $(NF-2)}' <filename>
如果你想打印後列第三例如在同一行中,您可以使用:
awk '{for(i=3; i<=NF; ++i) printf "%s ", $i; print ""}'
例如:
Mar 09:39 20180301_123131.jpg
Mar 13:28 20180301_124304.jpg
Mar 13:35 20180301_124358.jpg
Feb 09:45 Cisco_WebEx_Add-On.dmg
Feb 12:49 Docker.dmg
Feb 09:04 Grammarly.dmg
Feb 09:20 Payslip 10459 %2828-02-2018%29.pdf
它會打印:
20180301_123131.jpg
20180301_124304.jpg
20180301_124358.jpg
Cisco_WebEx_Add-On.dmg
Docker.dmg
Grammarly.dmg
Payslip 10459 %2828-02-2018%29.pdf
正如我們所看到的,工資單即使有空間,顯示了正確的路線。
- 1. 如何使用awk打印每第4列至第n列和從第(n + 1)列到最後一列?
- 2. 與第一和第二列打印對應的第三列
- 3. 用awk打印三列,然後打印三列
- 4. 如何打印第1列的第一行,並基於該uique標識列第二列的最後一行3
- 5. Primefaces DataExporter僅打印最後一列
- 6. AWK:打印一切,但不是最後的第n列
- 7. 打印第一列並打印%符號後的所有內容
- 8. 如何將最後一列「選項」移動到第一列
- 9. 更新:擊+ awk中:打印第一X(動態)列和總是最後一列
- 10. 如何打印文件的第三列在Java
- 11. 使用awk或sed打印從第n列到最後的所有列
- 12. 如何打印特定行中的最後一列?
- 13. 打印鏈接列表的第二個三分之一
- 14. 如何打印第一個和最後一個值?
- 15. awk從最後一列開始在csv文件中打印列
- 16. awk:打印前11列(不包括最後一列)
- 17. 打印前四列但之後每列第四列
- 18. 如何獲得第一列和最後一個數字列
- 19. awk命令從第3列打印到第n列
- 20. 查找第一列或第三列
- 21. 打印第一列匹配的行,第二列不同
- 22. bash打印第一列至第n列迭代
- 23. 如何以三維陣列方法打印列表
- 24. 如何從多個文本文件打印第二行和最後三行?
- 25. JQuery Sortable + Bootstrap - 第一列到最後一列 - 項消失
- 26. 打印每句第三字
- 27. 如何在Kendo UI分級網格中將第一列移到最後一列。
- 28. 如何在第三列
- 29. 如何在第三列
- 30. 如何打印三角形的數量然後打印它的最小周長?
[使用awk打印所有列從第n個到最後一個]的可能的重複(http://stackoverflow.com/questions/2961635/using-awk-to-print-all-columns-from-the-nth最後) – 2015-07-19 14:46:38