데이터 출력 파일에는 개행으로 구분된 여러 줄의 레코드가 있습니다. 각 행에서 열은 구분 기호로 구분됩니다 |
.
구분 기호 사이의 각 열에 있는 추가 공백, 탭, 줄 바꿈을 모두 바꿔보세요. 각 데이터 줄은 "&*"로 끝납니다.
데이터:
char1 | char2 |
char3|char 4 &*
char11
| char 12 |char13|char14 &*
char21 | char22 |char23| char24 &*
역할:
- 그런 다음 후행 공백/탭을 제거해야 합니다.
- 줄이 다음으로 시작/끝나는 경우 줄을 연결하세요.
|
- 반복되는 공백을 압축합니다.
- "&*" 뒤의 새 줄 건너뛰기
결과:
char1|char2|char3|char 4
char11|char 12|char13|char14
char21|char 22|char23|char24
내가 지금 가지고 있는 코드는 탭을 교체하기 위한 것입니다. 새 줄과 추가 공간을 갖도록 이를 변경해야 합니다.
sed -i 's/[ \t]\+|/|/g' DataStats0914.txt
답변1
GNU를 사용하면 sed
:
sed -E '
:a /\s*&\*\s*$/ !{ N; s/\n//; ta; };
# read "N"ext line and join (s/\n//) except "!" lines that ends with "&*" chars;
s/&\*//g;
# also remove these chars "&*" too
s/\s*\|\s*/|/g;
# remove whitespaces around "|" char as well
' <(tr -s '\t ' ' ' <infile)
아래의 주석 없는 명령:
sed -E '
:a /\s*&\*\s*$/ !{ N; s/\n//; ta; };
s/&\*//g;
s/\s*\|\s*/|/g;
' <(tr -s '\t ' ' ' <infile)