簡體   English   中英

Bash腳本編寫

[英]Scripting in Bash

我在bash中有一個函數說parse,它帶有一個參數,函數名是f。 我要處理的文件有點像

a@b@c@
a@d@e@g@
m@n@
t@

我想給輸出為

a@f(b)@f(c)@
a@f(d)@f(e)@f(g)@
m@f(n)@
t@

那就是將函數f應用於除第一個函數以外的所有函數。 有什么線索,該怎么辦?

應該這樣做:

sed 's/@\([^@]*\)/@f(\1)/g'

如果所有字段都是單個字符,則可以簡化一下(例如,使用.而不是\\([^@]*\\) )。

您可以使用sed:

sed -e 's/@\(.\)/@f(\1)/g'
awk 'BEGIN {OFS=FS="@"} {for (i=2; i<=NF-1; i++) $i="f("$i")"; print}'

也許這就是您想要的?

例如,您有一個名為sqr.sh的腳本:

kent$  cat sqr.sh
#!/bin/bash
echo $(($1*$1))

現在您想在輸入中應用上述功能:

kent$  echo "foo@2@3@4@
0@10@20@
x@"|awk -F'@' -v OFS=@ '{for(i=2;i<=NF;i++) if($i) "./sqr.sh "$i|getline $i; print}'

foo@4@9@16@
0@100@400@
x@

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM