hashdeep의 출력 파일에 대한 다음 조각이 제공됩니다.
7241,11111111111111111111111111111111,\01-data\file1
1237241,22222222222222222222222222222222,\01-data\file2
41,33333333333333333333333333333333,\01-data\file3
다음과 같이 형식을 지정하려면 어떻게 해야 하나요?
7241,11111111111111111111111111111111,\01-data\file1
1237241,22222222222222222222222222222222,\01-data\file2
41,33333333333333333333333333333333,\01-data\file3
sed를 사용하고 싶지만(이것이 제가 익숙해지기 시작했기 때문에) 특정 열에 나타나는 문자만 변경하도록 sed에 지시할 수 있는 방법이 있습니까?
물론, 다른 방법이 있다면 기꺼이 알려드리겠습니다.
-j0
그 이유는 hashdeep에서 (단일 스레드) 옵션을 사용 하지 않고도 두 개의 출력 파일을 비교할 수 있도록 파일 이름의 출력을 정렬하고 싶기 때문입니다 .
답변1
그리고 awk
:
awk -v l="$(wc -L <file)" '{printf "%"l"s\n", $0}' file
-v
awk
변수 에 외부 값을 할당합니다l
.wc -L <file
파일에서 가장 긴 줄의 길이를 찾습니다.
printf "%"l"s\n", $0
각 줄을 인쇄하고 공백으로 채웁니다l
. 10개 공간의 경우 다음과 같습니다printf "%10s\n", $0
.
산출:
7241,11111111111111111111111111111111,\01-data\file1
1237241,22222222222222222222222222222222,\01-data\file2
41,33333333333333333333333333333333,\01-data\file3
답변2
sed -e:, -e's/^[^,]\{0,6\},/ &/;t,'
줄 시작 부분에 쉼표가 아닌 문자가 7개 이상 있을 때까지 약간의 반복을 수행합니다. 그러나 쉼표 뒤에 쉼표가 아닌 문자가 이미 7개 미만이면 아무 작업도 수행되지 않습니다. 따라서 빈 줄이나 쉼표와 일치하지 않는 줄 또는 쉼표와 일치하지만 이미 쉼표가 아닌 7개 이상으로 시작하는 줄에는 영향을 주지 않습니다.
루프는 또한 매우 저렴합니다. 자동 장치는 쉼표 또는 쉼표가 아닌 두 종류의 문자만 고려하면 되며 주어진 시간에 최대 7개만 고려합니다.
7241,11111111111111111111111111111111,\01-data\file1
1237241,22222222222222222222222222222222,\01-data\file2
41,33333333333333333333333333333333,\01-data\file3
답변3
사용되지 않음 sed
입력 내용을 복사하여 Libreoffice Calc에 붙여넣고 선택하여 붙여넣기에서 "쉼표로 구분" 옵션을 선택한 다음 아래와 같이 각 데이터 유형을 별도의 열에 입력했습니다.
제 생각에는 매우 간단한 해결책입니다.
7241 11111111111111100000000000000000 \01-data\file1
1237241 22222222222222200000000000000000 \01-data\file2
41 33333333333333300000000000000000 \01-data\file3
답변4
질문을 잘 이해하지 못했지만 파일 이름별로 정렬하고 싶다고 가정합니까? 이 경우 다음을 사용하십시오 sort
.
sort -t , -k 3 my_file.txt