我有一個字符串製作水平字符串垂直殼或AWK
ABCDEFGHIJ
我想它來打印。
A
B
C
D
E
F
G
H
I
J
即水平,字符之間不會編輯垂直。如何用一條線將每個數字旁邊的數字加起來的獎勵分數。如果這是一個awk或shell腳本,那很好,但我很樂意學習新事物。 :) 謝謝!
我有一個字符串製作水平字符串垂直殼或AWK
ABCDEFGHIJ
我想它來打印。
A
B
C
D
E
F
G
H
I
J
即水平,字符之間不會編輯垂直。如何用一條線將每個數字旁邊的數字加起來的獎勵分數。如果這是一個awk或shell腳本,那很好,但我很樂意學習新事物。 :) 謝謝!
如果你只是想將一個字符串轉換爲一個字符,每行,你只需要告訴awk表示每個輸入字符都是獨立的字段,並且每個輸出字段應該用換行符分隔,然後通過爲自身分配字段來重新編譯每條記錄:
awk -v FS= -v OFS='\n' '{$1=$1}1'
例如爲:
$ echo "ABCDEFGHIJ" | awk -v FS= -v OFS='\n' '{$1=$1}1'
A
B
C
D
E
F
G
H
I
J
,如果你想旁邊的每個字符字段號碼,請@肯特的解決方案或管cat -n
。
您發佈的sed解決方案是不可移植的,並且在某些操作系統上會失敗並出現一些seds,並且會在您的sed輸出結尾添加一個不需要的空白行,然後這些空行將變爲管道後的尾行號cat -n
所以它不是一個好的選擇。你應該接受@肯特的答案。
AWK一行代碼:
awk 'BEGIN{FS=""}{for(i=1;i<=NF;i++)print i,$i}'
測試:
kent$ echo "ABCDEF"|awk 'BEGIN{FS=""}{for(i=1;i<=NF;i++)print i,$i}'
1 A
2 B
3 C
4 D
5 E
6 F
這可能爲你工作(GNU SED):
sed 's/\B/\n/g' <<<ABCDEFGHIJ
行號:
sed 's/\B/\n/g' <<<ABCDEFGHIJ | sed = | sed 'N;y/\n/ /'
或:
sed 's/\B/\n/g' <<<ABCDEFGHIJ | cat -n
還有一個AWK
echo "ABCDEFGHIJ" | awk '{gsub(/./,"&\n")}1'
A
B
C
D
E
F
G
H
I
J
這與發佈相似的sed腳本具有相同的問題,因爲它會在輸出結尾添加尾隨空行。 –
http://stackoverflow.com/questions/8563745/loop-over-characters-in-input-string-using-awk –
謝謝,我也想了很多搞亂之後我自己。 – jeffpkamp
@EliRose - 在你引用的問題中接受的答案几乎在每一行都有錯誤,所有新手錯誤。你不應該把它作爲參考。 –