업데이트 : 여기에 테이블 형식 출력을위한 훨씬 간단한 스크립트 (질문 끝에있는 스크립트)가 있습니다. 파일 이름을 원하는대로 전달하십시오 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
열 너비를 얻기 위해, 그리고 sed
A를 우측 패드에 보이는 문자 .
(그냥 예를 들어) ... 그리고 paste
A를 두 열 가입 탭 문자를 ...
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...........