2009-09-02 4 views
0

텍스트 데이터가 포함 된 파일이 있습니다.이 파일은 세미콜론으로 구분됩니다. ";". 데이터를 분리하고 싶습니다. 즉, 어디에서 분열합니까 ;이 발생하고 출력 파일에 데이터를 씁니다. bash 스크립트로 할 수있는 방법이 있습니까?파일을 세그먼트로 분할 했습니까?

답변

1

시도 :이에 의해 구분 된 필드의 각 줄을 분할합니다

cat original_file.txt | cut -d";" -f1 > new_file.txt 

";" 첫 번째 필드 (-f1)를 선택하십시오. -f1, -f2, ... 또는 -f1-2, -f2-를 사용하여 여러 필드를 사용하여 다른 필드에 액세스 할 수 있습니다.

+1

고양이가 필요하지 않은 t \ 로 교체해야

경우 output.txt '\ n을'>. cut -d ";" -f1 org_file.txt> newfile – ghostdog74

+0

여러 필드를 잘라내어 구분 기호로 묶습니다. –

4

FS (필드 구분 기호 변수)를 ';'으로 설정하면 대부분 awk이됩니다.

Awk는 열 기반 데이터 (일부는 Perl을 선호하지만 나 대신)에 적합한 도구입니다.

echo '1;2;3;4;5 
6;7;8;9;10' | awk -F\; '{print $3" "$5}' 

출력 :

3 5 
8 10 

그냥 줄 바꿈에 세미콜론을 설정하려면 :

echo '1;2;3;4;5 
6;7;8;9;10' | sed 's/;/\n/g' 

별도의 라인에서 10까지의 숫자 1을 출력합니다.

물론이 명령은 테스트 데이터를 사용하는 것입니다. 당신은 'TR' 명령에 의해 다른 문자로 문자를 번역 할 수 있습니다

sed 's/;/\n/g' <input_file >output_file 
3
#!/bin/bash 

while read -d ';' ITEM; do 
    echo "$ITEM" 
done 
+0

이것은 내가 아는 바로는 bash만을 사용하여 이것을 수행하는 유일한 효율적인 방법입니다. 즉 외부 프로그램을 사용하여 파싱을 수행하지 않아도된다. – tylerl

0

: 당신이 당신의 자신의 파일을 사용하려면, 같은 것을 사용합니다.

cat input.txt | tr '; \ n 새로운 라인이며 탭을 원하는 경우에만

관련 문제