我有一些資料的大資料檔案:
01 01 00 2c 00 82 03 00 02 00 00 00 07 08 07 08
07 08 07 08 07 08 07 08 07 08 07 08 07 08 07 08
07 08 07 08 07 08 07 08 07 08 07 08 07 08 07 08
07 08 07 08 07 08 07 08 07 08 07 08 07 08 07 08
0f 08 08 08 0a 08 07 08 0f 08 08 08 08 08 08 08
08 08 08 08 08 07 08 07 0a 07 07 07 0f 07 08 07
08 07 08 07 08 07 08 07 08 07 08 07 0a 07 07 07
..
.....
我想從每 6 行中洗掉前 n 個字符
我找到了一個命令:
sed 's/^.\{,n\}//' file
但是這個命令會從每行中洗掉前 n 個字符,這是我不希望發生的。
有人可以提出正確的命令嗎?
uj5u.com熱心網友回復:
GNUsed允許您以以下形式使用地址
第一步~
(...) 匹配從 line first(...) 開始的每個 stepth 行
因此1~6確實屬于第1、7、13等行,2~6屬于第2、8、14等行,設file.txt內容為
01 01 00 2c 00 82 03 00 02 00 00 00 07 08 07 08
07 08 07 08 07 08 07 08 07 08 07 08 07 08 07 08
07 08 07 08 07 08 07 08 07 08 07 08 07 08 07 08
07 08 07 08 07 08 07 08 07 08 07 08 07 08 07 08
0f 08 08 08 0a 08 07 08 0f 08 08 08 08 08 08 08
08 08 08 08 08 07 08 07 0a 07 07 07 0f 07 08 07
08 07 08 07 08 07 08 07 08 07 08 07 0a 07 07 07
..
.....
并且 n 等于 5 那么,你可能會這樣做
sed '1~6 s/^.....//' file.txt
給出輸出
00 2c 00 82 03 00 02 00 00 00 07 08 07 08
07 08 07 08 07 08 07 08 07 08 07 08 07 08 07 08
07 08 07 08 07 08 07 08 07 08 07 08 07 08 07 08
07 08 07 08 07 08 07 08 07 08 07 08 07 08 07 08
0f 08 08 08 0a 08 07 08 0f 08 08 08 08 08 08 08
08 08 08 08 08 07 08 07 0a 07 07 07 0f 07 08 07
08 07 08 07 08 07 08 07 08 07 0a 07 07 07
..
.....
(經過測驗的 GNU sed 4.7)
uj5u.com熱心網友回復:
awk -v n=17 '(NR%6)==1 { print substr($0, n 1); next } 1' file
該條件對行號使用模運算NR來選擇每六行,從第一行開始。最后1導致其他行正常列印。
你還沒有透露價值,n所以我猜。
uj5u.com熱心網友回復:
gawk/nawk解決方案。mawks 需要稍微不同的方法
for N in $(jot - 2 28 7); do
jot -b '0123456789012345678901234567890123456789' 8 |
gawk -v FS='^.{'"$N"'}' 'BEGIN { _^=OFS=_ } NR%6!=_ || NF=NF' | gcat -n
echo "${N}"
done
1 23456789012345678901234567890123456789
2 0123456789012345678901234567890123456789
3 0123456789012345678901234567890123456789
4 0123456789012345678901234567890123456789
5 0123456789012345678901234567890123456789
6 0123456789012345678901234567890123456789
7 23456789012345678901234567890123456789
8 0123456789012345678901234567890123456789
2
1 9012345678901234567890123456789
2 0123456789012345678901234567890123456789
3 0123456789012345678901234567890123456789
4 0123456789012345678901234567890123456789
5 0123456789012345678901234567890123456789
6 0123456789012345678901234567890123456789
7 9012345678901234567890123456789
8 0123456789012345678901234567890123456789
9
1 678901234567890123456789
2 0123456789012345678901234567890123456789
3 0123456789012345678901234567890123456789
4 0123456789012345678901234567890123456789
5 0123456789012345678901234567890123456789
6 0123456789012345678901234567890123456789
7 678901234567890123456789
8 0123456789012345678901234567890123456789
16
1 34567890123456789
2 0123456789012345678901234567890123456789
3 0123456789012345678901234567890123456789
4 0123456789012345678901234567890123456789
5 0123456789012345678901234567890123456789
6 0123456789012345678901234567890123456789
7 34567890123456789
8 0123456789012345678901234567890123456789
23
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/523730.html
上一篇:命令awk-F/是什么意思?
