소문자로 시작하는 현재 줄에 이전 줄을 추가하려면 스크립트나 명령이 필요합니다.

소문자로 시작하는 현재 줄에 이전 줄을 추가하려면 스크립트나 명령이 필요합니다.

Excel에서 파일을 열기 전에 형식을 지정하려는 출력은 다음과 같습니다.

1. |1.99934| BD | 1| C   1 - H   2
| 60.12%|   0.7754* C   1 s| 24.99%|p 3.00| 74.95%|d 0.00|  0.05%|
f 0.00|  0.01%|
| 39.88%|   0.6315* H   2 s| 99.94%|p 0.00|  0.06%|
2. |1.99934| BD | 1| C   1 - H   3
| 60.12%|   0.7754* C   1 s| 24.99%|p 3.00| 74.95%|d 0.00|  0.05%|
f 0.00|  0.01%|
| 39.88%|   0.6315* H   3 s| 99.94%|p 0.00|  0.06%|
3. |1.99934| BD | 1| C   1 - H   4
| 60.12%|   0.7754* C   1 s| 24.99%|p 3.00| 74.95%|d 0.00|  0.05%|
f 0.00|  0.01%|
| 39.88%|   0.6315* H   4 s| 99.94%|p 0.00|  0.06%|
4. |1.99934| BD | 1| C   1 - H   5
| 60.12%|   0.7754* C   1 s| 24.99%|p 3.00| 74.95%|d 0.00|  0.05%|
f 0.00|  0.01%|
| 39.88%|   0.6315* H   5 s| 99.94%|p 0.00|  0.06%|

출력이 다음과 같도록 "f"로 시작하는 줄을 이전 줄에 추가하는 방법을 원합니다.

1. |1.99934| BD | 1| C   1 - H   2
| 60.12%|   0.7754* C   1 s| 24.99%|p 3.00| 74.95%|d 0.00|  0.05%|f 0.00|  0.01%|
| 39.88%|   0.6315* H   2 s| 99.94%|p 0.00|  0.06%|
2. |1.99934| BD | 1| C   1 - H   3
| 60.12%|   0.7754* C   1 s| 24.99%|p 3.00| 74.95%|d 0.00|  0.05%|f 0.00|  0.01%|
| 39.88%|   0.6315* H   3 s| 99.94%|p 0.00|  0.06%|
3. |1.99934| BD | 1| C   1 - H   4
| 60.12%|   0.7754* C   1 s| 24.99%|p 3.00| 74.95%|d 0.00|  0.05%|f 0.00|  0.01%|
| 39.88%|   0.6315* H   4 s| 99.94%|p 0.00|  0.06%|
4. |1.99934| BD | 1| C   1 - H   5
| 60.12%|   0.7754* C   1 s| 24.99%|p 3.00| 74.95%|d 0.00|  0.05%|f 0.00|  0.01%|
| 39.88%|   0.6315* H   5 s| 99.94%|p 0.00|  0.06%|

SED를 사용하여 이 작업을 수행하려는 시도는 실패했습니다! 돕다! !

답변1

사용 paste:

$ paste -d '\n\0\n\n' - - - - <file
1. |1.99934| BD | 1| C   1 - H   2
| 60.12%|   0.7754* C   1 s| 24.99%|p 3.00| 74.95%|d 0.00|  0.05%|f 0.00|  0.01%|
| 39.88%|   0.6315* H   2 s| 99.94%|p 0.00|  0.06%|
2. |1.99934| BD | 1| C   1 - H   3
| 60.12%|   0.7754* C   1 s| 24.99%|p 3.00| 74.95%|d 0.00|  0.05%|f 0.00|  0.01%|
| 39.88%|   0.6315* H   3 s| 99.94%|p 0.00|  0.06%|
3. |1.99934| BD | 1| C   1 - H   4
| 60.12%|   0.7754* C   1 s| 24.99%|p 3.00| 74.95%|d 0.00|  0.05%|f 0.00|  0.01%|
| 39.88%|   0.6315* H   4 s| 99.94%|p 0.00|  0.06%|
4. |1.99934| BD | 1| C   1 - H   5
| 60.12%|   0.7754* C   1 s| 24.99%|p 3.00| 74.95%|d 0.00|  0.05%|f 0.00|  0.01%|
| 39.88%|   0.6315* H   5 s| 99.94%|p 0.00|  0.06%|

네 줄로 구성된 각 그룹에서 두 번째 개행 문자를 제거하려는 것처럼 보이므로 위 paste명령이 바로 그 작업을 수행합니다.

답변2

An은 awk그룹의 행 수를 나타내며 소문자로 시작합니다....

awk -v ORS= '{print (($0!~"^[a-z]"&&NR>1)?"\n":"")$0}END{ print "\n"}' file

ORS소문자로 시작하지 않는 경우 공백으로 설정 하고 인쇄합니다. 첫 번째 줄 앞에 \n넣지 마세요 .$0$0\n

산출

1. |1.99934| BD | 1| C   1 - H   2
| 60.12%|   0.7754* C   1 s| 24.99%|p 3.00| 74.95%|d 0.00|  0.05%|f 0.00|  0.01%|
| 39.88%|   0.6315* H   2 s| 99.94%|p 0.00|  0.06%|
2. |1.99934| BD | 1| C   1 - H   3
| 60.12%|   0.7754* C   1 s| 24.99%|p 3.00| 74.95%|d 0.00|  0.05%|f 0.00|  0.01%|
| 39.88%|   0.6315* H   3 s| 99.94%|p 0.00|  0.06%|
3. |1.99934| BD | 1| C   1 - H   4
| 60.12%|   0.7754* C   1 s| 24.99%|p 3.00| 74.95%|d 0.00|  0.05%|f 0.00|  0.01%|
| 39.88%|   0.6315* H   4 s| 99.94%|p 0.00|  0.06%|
4. |1.99934| BD | 1| C   1 - H   5
| 60.12%|   0.7754* C   1 s| 24.99%|p 3.00| 74.95%|d 0.00|  0.05%|f 0.00|  0.01%|
| 39.88%|   0.6315* H   5 s| 99.94%|p 0.00|  0.06%|

노트:sedf캡처 그룹에서 검색을 정규식으로 바꾸고 \n([a-z])캡처된 문자를 다시 삽입 하면 \1기본적으로 주석에 있는 @steeldriver의 응답과 동일합니다.

나는 그것이 awk더 읽기 쉽다고 생각합니다.

답변3

앞:

printf '%s\n' g/^f/-1j wq | ex file

이것은 전역 명령을 사용하여 oin으로 시작하는 모든 줄에서 oin을 실행합니다 g. Join은 단지 연결선일 뿐입니다.-1jf

답변4

$ awk '{printf "%s%s", (/^f/ ? "" : s), $0; s=ORS} END{print ""}' file
1. |1.99934| BD | 1| C   1 - H   2
| 60.12%|   0.7754* C   1 s| 24.99%|p 3.00| 74.95%|d 0.00|  0.05%|f 0.00|  0.01%|
| 39.88%|   0.6315* H   2 s| 99.94%|p 0.00|  0.06%|
2. |1.99934| BD | 1| C   1 - H   3
| 60.12%|   0.7754* C   1 s| 24.99%|p 3.00| 74.95%|d 0.00|  0.05%|f 0.00|  0.01%|
| 39.88%|   0.6315* H   3 s| 99.94%|p 0.00|  0.06%|
3. |1.99934| BD | 1| C   1 - H   4
| 60.12%|   0.7754* C   1 s| 24.99%|p 3.00| 74.95%|d 0.00|  0.05%|f 0.00|  0.01%|
| 39.88%|   0.6315* H   4 s| 99.94%|p 0.00|  0.06%|
4. |1.99934| BD | 1| C   1 - H   5
| 60.12%|   0.7754* C   1 s| 24.99%|p 3.00| 74.95%|d 0.00|  0.05%|f 0.00|  0.01%|
| 39.88%|   0.6315* H   5 s| 99.94%|p 0.00|  0.06%|

관련 정보