bash에서 sed 또는 awk를 사용하여 csv의 첫 번째 열 편집

bash에서 sed 또는 awk를 사용하여 csv의 첫 번째 열 편집

csv 파일이 있고 ";" 뒤의 모든 내용을 제거하여 과학 논문 제목이 포함된 첫 번째 열을 편집하고 싶습니다. 상징.

따라서 일반적인 헤더의 형식은 다음과 같습니다.

long scientific title here;other stuff I want to delete including the semicolon (no space between ; and the text)

제목을 다음과 같이 만들고 싶습니다.

long scientific title here

sed또는 awk(이것이 중요한 경우 macOS에서)를 사용하여 이를 어떻게 달성합니까 ?

답변1

각 줄의 첫 번째 세미콜론 뒤의 모든 항목을 제거하려면 다음을 수행하세요.

그리고 cut:

cut -d';' -f1 file
  • -d';'세미콜론을 구분 기호로 사용
  • -f1첫 번째 필드 인쇄

그리고 awk:

awk -F';' '{ print $1 }' file

다음과 같습니다 cut. 입력 필드 구분 기호로 세미콜론을 사용하고 첫 번째 필드를 인쇄합니다.


그리고 sed:

sed 's/;.*//' file

세미콜론과 다음 문자를 빈 문자열로 바꿉니다.

답변2

첫 번째 칼럼이므로 (GNU) sed면 충분하다고 생각했습니다. 열 구분 기호가 탭이라고 가정하면 다음과 같습니다.

sed -E 's/^(.*);.*\t/\1\t/' file

답변3

운영 체제에는 텍스트 처리를 위한 작고 간단한 도구가 많이 포함되어 있습니다. 이 경우 다음을 사용합니다 cut.

cut -d; -f1 <FILE >tmpfile && mv tmpfile FILE

관련 정보