Sed
如果正則表達式僅存在於 csv 文件中每一行的第一列中,則刪除一行
我有以下逗號分隔的數據(用於視覺清晰的空格):
1 2014 23 2352 19.24 7.18 1 2014 23 2353 19.78 4.65 24 2014 23 2354 20.26 25.34 1 2014 23 2355 26.65 42.76 1 2014 23 2356 27.34 56.356 1 2014 23 2357 29.24 45.4 24 2014 23 2358 30.23 345.27 1 2014 23 2359 23.23 345.21 1 2014 24 0000 12.53 1.98 1 2014 24 0001 7.24 12.3 24 2014 24 0002 15.68 90.8
我只想刪除以 24 開頭的每一行(或保留以 1 開頭的每一行)。
所以所需的輸出將是:
1 2014 23 2352 19.24 7.18 1 2014 23 2353 19.78 4.65 1 2014 23 2355 26.65 42.76 1 2014 23 2356 27.34 56.356 1 2014 23 2357 29.24 45.4 1 2014 23 2359 23.23 345.21 1 2014 24 0000 12.53 1.98 1 2014 24 0001 7.24 12.3
我試過了
sed '/24/d' (filename)
但這會刪除整個文件中 24 的每個實例,如下所示(不需要!):
1 2014 23 2353 19.78 4.65 1 2014 23 2355 26.65 42.76 1 2014 23 2356 27.34 56.356 1 2014 23 2359 23.23 345.21
使用
awk
(1
在行首列印所有內容):awk '/^1/{print $0}'
使用
sed
(-n
禁止列印所有內容的選項):sed -n '/^1/p'
使用
grep
(也許不是文本處理的最佳選擇,但在這種情況下已經足夠好了):grep '^1'
grep -v ^24
只保留不以 24 開頭的行