我正在執行一項任務,要求我創建一個腳本,該腳本獲取文件名作為參數,然後它應該打印文件中的所有行以及它們末尾的長度,例如:banana milk = >香蕉牛奶11 unix 和linux => unix 和linux 14 macbook pro =>macbook pro 11
答案1
這會列印檔案中的每一行,後面跟著行的長度(就字元數而言,不包括 POSIX 相容的 awk 實作中的行分隔符,儘管有些會給出位元組數)。
<FOO awk '{print $0,length}'
不確定這是否是你要問的。
答案2
該awk
解決方案是最好的解決方案,但是,如果您不想使用 awk,這裡有一些替代方案:
while IFS= read -r line
do
printf "%s %d\n" "$line" "${#line}"
done < "$1"
while IFS= read -r line
do
printf "%s %d\n" "$line" "$(expr "$line" : '.*')"
done < "$1"
while IFS= read -r line
do
printf "%s %d\n" "$line" "$(printf "%s" "$line" | wc -c)"
done < "$1"
while IFS= read -r line
do
printf "%s %d\n" "$line" "$(wc -c <<< "$line")"
done < "$1"
該wc -c <<< "$line"
變體將給出比其他數字高一個的數字,因為它包含換行符。
答案3
不太確定您在尋找什麼。以下腳本應該準確地給出您想要的輸出。
#!/bin/bash
cat $1
cat $1 | wc -m