求复杂些的linux shell编程题,awk编程题或者服务器方面的实验题

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了求复杂些的linux shell编程题,awk编程题或者服务器方面的实验题相关的知识,希望对你有一定的参考价值。

自学想测试下实战水平

a b c a d a
s d d d x s a
h j s a s h j h
j d f j a s j k j

删除行内与第一列字符重复的字符,shell、sed、awk各写一个。
例如:
a b c a d a结果是
a b c d
h j s a s h j结果是
h j s a s追问

awk与bash相似(这个汗一个,水平太次了,别的想不出来了):
getline str < "test";split(str,ar)
for (i=2;i<=NF;i++)

if ( i == 2 ) printf($1)
if ( ar[i] != ar[1] ) printf(" "ar[i] )

printf ("\n")


sed 实在想不出来了,网指教,拜谢了

追答

sed 我也没想出来。
我也是拿awk写的。没办法。能力有限,看看哪位高手。写个sed出来吧。

awk 'for(i=1;i<=NF;i++)printf ($i==s)?"":$i" ";s=$1printf "\n"'

参考技术A 别人在百度知道上问的一些问题,自己去做做吧。
我这里收集了一些(shell和awk都有):
http://hi.baidu.com/lizhiyunxin/blog/item/884ea78ea0d28f05b21bba6a.html
参考技术B #!/bin/bash
while read line
do
str=`echo $line | tr " " "\n" | sort -u`
str=`echo $str | tr "\n" " "`
echo $str
done < a.txt

这样的对吗?追问

我是这么做的,跟你的结果不太一样:
#!/bin/bash
while read -a ar
do
num=$#ar[*]
for ((i=1;i<num;i++))
do
if [[ $ar[i] = $ar[0] ]]
then unset ar[i]
fi
done
echo $ar[*]

done<test

以上是关于求复杂些的linux shell编程题,awk编程题或者服务器方面的实验题的主要内容,如果未能解决你的问题,请参考以下文章

Shell编程面试题

Shell编程之正则表达式

Shell编程之正则表达式三剑客——awk工具

Linux Shell常用技巧 awk编程

shell编程题

Linux Shell编程 awk命令