업데이트 : 여기에 테이블 형식 출력을위한 훨씬 간단한 스크립트 (질문 끝에있는 스크립트)가 있습니다. 파일 이름을 원하는대로 전달하십시오 paste... html프레임을 만드는 데 사용 되므로 조정할 수 있습니다. 여러 공백을 유지하고 유니 코드 문자가 발생하면 열 정렬이 유지됩니다. 그러나 편집기 또는 뷰어 렌더러가 유니 코드를 만드는 방식은 완전히 다른 문제입니다 ...
┌──────────────────────┬────────────────┬──────────┬────────────────────────────┐
│ Languages │ Minimal │ Chomsky │ Unrestricted │
├──────────────────────┼────────────────┼──────────┼────────────────────────────┤
│ Recursive │ Turing machine │ Finite │ space indented │
├──────────────────────┼────────────────┼──────────┼────────────────────────────┤
│ Regular │ Grammars │ │ ➀ unicode may render oddly │
├──────────────────────┼────────────────┼──────────┼────────────────────────────┤
│ 1 2 3 4 spaces │ │ Symbol-& │ but the column count is ok │
├──────────────────────┼────────────────┼──────────┼────────────────────────────┤
│ │ │ │ Context │
└──────────────────────┴────────────────┴──────────┴────────────────────────────┘
#!/bin/bash
{ echo -e "<html>\n<table border=1 cellpadding=0 cellspacing=0>"
paste "$@" |sed -re 's#(.*)#\x09\1\x09#' -e 's#\x09# </pre></td>\n<td><pre> #g' -e 's#^ </pre></td>#<tr>#' -e 's#\n<td><pre> $#\n</tr>#'
echo -e "</table>\n</html>"
} |w3m -dump -T 'text/html'
---
답변에 제시된 도구의 개요 (지금까지).
나는 그것들을 아주 자세히 보았습니다. 여기 내가 찾은 것이 있습니다 :
paste#이 도구는 지금까지 제시된 모든 답변에 공통입니다. # 여러 파일을 처리 할 수 있습니다. 따라서 여러 열 ... 좋습니다! # 탭으로 각 열을 구분합니다 ... 양호. # 출력이 표로 작성되지 않았습니다.
아래의 모든 도구는이 구분 기호를 제거합니다! ... 구분 기호가 필요한 경우 나쁩니다.
column # 탭 구분 기호를 제거하므로 필드 식별은 순전히 잘 처리되는 것으로 보이는 열에 의해 결정됩니다. 난 아무것도 발견하지 못했습니다 ... # 고유 한 구분 기호가없는 것 외에도 잘 작동합니다!
expand # 단일 탭 설정 만 있으므로 2 열 이상으로 예측할 수 없습니다 # 유니 코드를 처리 할 때 열 정렬이 정확하지 않으며 탭 구분 기호를 제거하므로 필드 식별은 열 정렬에 의해 순전히
pr# 단일 탭 설정 만 있으므로 2 열 이상으로 예측할 수 없습니다. # 유니 코드를 처리 할 때 열의 정렬이 정확하지 않으며 탭 구분 기호를 제거하므로 필드 식별은 순전히 열 정렬에 의한 것입니다
나에게, column그것은 하나의 라이너로 명백한 최고의 해결책입니다 .. 당신은 파일의 구분 기호 또는 ASCII 예술 탭화를 원합니다. 그렇지 않으면 읽으십시오 columns.
다음은 많은 수의 파일을 가져 와서 ASCII로 표현 된 표 형식의 프리젠 테이션을 만드는 스크립트입니다. (유니 코드는 예상되는 너비로 렌더링되지 않을 수 있습니다. 위에서 언급 한 일부 유틸리티에서와 같이 숫자가 잘못되었습니다.) ... 아래에 표시된 스크립트의 출력은 F1 F2 F3 F4라는 이름의 4 개의 입력 파일에서 나옵니다.
+------------------------+-------------------+-------------------+--------------+
| Languages | Minimal automaton | Chomsky hierarchy | Grammars |
| Recursively enumerable | Turing machine | Type-0 | Unrestricted |
| Regular | Finite | — | |
| Alphabet | | Symbol | |
| | | | Context |
+------------------------+-------------------+-------------------+--------------+
#!/bin/bash
# Note: The next line is for testing purposes only!
set F1 F2 F3 F4 # Simulate commandline filename args $1 $2 etc...
p=' ' # The pad character
# Get line and column stats
cc=${#@}; lmax= # Count of columns (== input files)
for c in $(seq 1 $cc) ;do # Filenames from the commandline
F[$c]="${!c}"
wc=($(wc -l -L <${F[$c]})) # File length and width of longest line
l[$c]=${wc[0]} # File length (per file)
L[$c]=${wc[1]} # Longest line (per file)
((lmax<${l[$c]})) && lmax=${l[$c]} # Length of longest file
done
# Determine line-count deficits of shorter files
for c in $(seq 1 $cc) ;do
((${l[$c]}<lmax)) && D[$c]=$((lmax-${l[$c]})) || D[$c]=0
done
# Build '\n' strings to cater for short-file deficits
for c in $(seq 1 $cc) ;do
for n in $(seq 1 ${D[$c]}) ;do
N[$c]=${N[$c]}$'\n'
done
done
# Build the command to suit the number of input files
source=$(mktemp)
>"$source" echo 'paste \'
for c in $(seq 1 $cc) ;do
((${L[$c]}==0)) && e="x" || e=":a -e \"s/^.{0,$((${L[$c]}-1))}$/&$p/;ta\""
>>"$source" echo '<(sed -re '"$e"' <(cat "${F['$c']}"; echo -n "${N['$c']}")) \'
done
# include the ASCII-art Table framework
>>"$source" echo ' | sed -e "s/.*/| & |/" -e "s/\t/ | /g" \' # Add vertical frame lines
>>"$source" echo ' | sed -re "1 {h;s/[^|]/-/g;s/\|/+/g;p;g}" \' # Add top and botom frame lines
>>"$source" echo ' -e "$ {p;s/[^|]/-/g;s/\|/+/g}"'
>>"$source" echo
# Run the code
source "$source"
rm "$source"
exit
여기 내 원래 답변이 있습니다 (위의 스크립트 대신 약간 트리밍 됨)
사용하여 wc열 너비를 얻기 위해, 그리고 sedA를 우측 패드에 보이는 문자 .(그냥 예를 들어) ... 그리고 pasteA를 두 열 가입 탭 문자를 ...
paste <(sed -re :a -e 's/^.{1,'"$(($(wc -L <F1)-1))"'}$/&./;ta' F1) F2
# output (No trailing whitespace)
Languages............. Minimal automaton
Recursively enumerable Turing machine
Regular............... Finite
오른쪽 열을 채우려면 :
paste <( sed -re :a -e 's/^.{1,'"$(($(wc -L <F1)-1))"'}$/&./;ta' F1 ) \
<( sed -re :a -e 's/^.{1,'"$(($(wc -L <F2)-1))"'}$/&./;ta' F2 )
# output (With trailing whitespace)
Languages............. Minimal automaton
Recursively enumerable Turing machine...
Regular............... Finite...........