Ann*_*ond 11 linux command-line text-processing
我正在尝试更改特定模式中的行顺序。处理包含多行(例如 99 行)的文件。对于每三行,我希望第二行是第三行,第三行是第二行。
例子。
1-输入:
gi_1234
My cat is blue.
I have a cat.
gi_5678
My dog is orange.
I also have a dog.
...
Run Code Online (Sandbox Code Playgroud)
2- 输出:
gi_1234
I have a cat.
My cat is blue.
gi_5678
I also have a dog.
My dog is orange.
...
Run Code Online (Sandbox Code Playgroud)
Sté*_*las 23
$ seq 9 | sed -n 'p;n;h;n;G;p'
1
3
2
4
6
5
7
9
8
Run Code Online (Sandbox Code Playgroud)
即,p
RINT当前行,得到n
分机之一,h
旧它,得到的n
分机一个,G
等所保持的线(将其追加到图案空间),p
RINT与所述第三和第二线2列图案空间交换。
Dop*_*oti 12
使用awk
和整数数学:
awk 'NR%3 == 1 { print } NR%3 == 2 { delay=$0 } NR%3 == 0 { print; print delay; delay=""} END { if(length(delay) != 0 ) { print delay } }' /path/to/input
Run Code Online (Sandbox Code Playgroud)
取模运算符执行整数除法并返回余数,因此对于每一行,它将返回序列 1, 2, 0, 1, 2, 0 [...]。知道了这一点,我们只是将输入保存在模数为 2 的行上以备后用——也就是说,就在输入为零时打印输入之后。
归档时间: |
|
查看次数: |
4595 次 |
最近记录: |