다음 형식의 데이터베이스 덤프 파일이 있습니다.
('value1','value2',value3','value4'),('value1','value2',value3','value4'),...
먼저 각 튜플을 한 행에 넣고 싶은데, 그런 다음 하나의 값만 내보내고 싶습니다(예: 각 튜플의 value3).
답변1
각 튜플을 별도의 줄에 배치합니다.
sed 's@)\s*,\s*(@)\n(@g' your_file
파일에 수정 사항을 적용하려면(수정된 파일을 표준 출력으로 인쇄하는 대신) 다음을 수행하십시오.
sed -i 's@)\s*,\s*(@)\n(@g' your_file
보고만 value3
(파일이 수정되었다고 가정):
awk -F',' '{print $3}' <your_new_file
이는 값 자체가 포함되어 있지 않다고 가정합니다 ,
. 아래 Michael의 설명을 참조하세요.
한 번에 모든 작업을 수행하세요(파일을 수정할 필요 없음).
sed 's@)\s*,\s*(@)\n(@g' your_file | awk -F',' '{print $3}'
위의 호출을 단순화하기 위해 귀하의 예에 따라 입력을 세 번째 값으로 분할할 수 있고 그 안에 괄호가 없다는 awk
사실을 활용했습니다 . 원하는 경우 또는 그 반대의 경우 다음을 수행할 수 있습니다.,
value3
value1
value4
sed 's@)\s*,\s*(@)\n(@g' your_file | awk -F',' '{print $1}' | sed 's/[()]//'
물론 이는 값의 내용에 괄호가 없다고 가정합니다.