1.清空文件
>>C语言中
....
char buf[10] = {0};
fp = fopen(“file_name”, “w”);
if(fp)
{
sprintf(buf, "\n");
fput(buf, fp);
fclose(fp);
}
>>>>>>脚本语言
:> file_name
一个简单的命令“:>” 就可以搞定~~
还有一种方法:
cat /dev/null > file_name
好处不多说了,呵呵~
-----------------------------------------------------------------------------------------------------------------------
bash中实现变量加1:
#!/bin/bash# 使用10种不同的方法计数到11.
n=1; echo -n "$n "
let "n = $n + 1" # let "n = n + 1" 也可以.
echo -n "$n "
: $((n = $n + 1))
# ":" 是必需的, 因为如果没有":"的话,
#+ Bash将会尝试把"$((n = $n + 1))"解释为一个命令.
echo -n "$n "
(( n = n + 1 ))
# 上边这句是一种更简单方法.
# 感谢, David Lombard, 指出这点.
echo -n "$n "
n=$(($n + 1))
echo -n "$n "
: $[ n = $n + 1 ]
# ":" 是必需的, 因为如果没有":"的话,
#+ Bash将会尝试把"$[ n = $n + 1 ]"解释为一个命令.
# 即使"n"被初始化为字符串, 这句也能够正常运行.
echo -n "$n "
n=$[ $n + 1 ]
# 即使"n"被初始化为字符串, 这句也能够正常运行.
#* 应该尽量避免使用这种类型的结构, 因为它已经被废弃了, 而且不具可移植性.
# 感谢, Stephane Chazelas.
echo -n "$n "
# 现在来一个C风格的增量操作.
# 感谢, Frank Wang, 指出这点.
let "n++" # let "++n" 也可以.
echo -n "$n "
(( n++ )) # (( ++n ) 也可以.
echo -n "$n "
: $(( n++ )) # : $(( ++n )) 也可以.
echo -n "$n "
: $[ n++ ] # : $[ ++n ]] 也可以.
echo -n "$n "
echo
exit 0
----------------------------------------------------------------------------------------------------------------------------------------
脚本中循环的写法:
var=1
while :
#for var in [1-9]
do
#var=`expr $var + 1`
#var=$[$var + 1]
let "var++"
echo "------$var"
echo "$var"
if [ $var == 100 ]
#if [ $var -eq 100 ]
then
break
fi
done
-----------------------------------------------------------------------------------------------
if 语句中其他比较操作符:
整数比较
-eq
等于
if [ "$a" -eq "$b" ]
-ne
不等于
if [ "$a" -ne "$b" ]
-gt
大于
if [ "$a" -gt "$b" ]
-ge
大于等于
if [ "$a" -ge "$b" ]
-lt
小于
if [ "$a" -lt "$b" ]
-le
小于等于
if [ "$a" -le "$b" ]
<
小于(在双括号中使用)
(("$a" < "$b"))
<=
小于等于(在双括号中使用)
(("$a" <= "$b"))
>
大于(在双括号中使用)
(("$a" > "$b"))
>=
大于等于(在双括号中使用)
(("$a" >= "$b"))
字符串比较
=
等于
if [ "$a" = "$b" ]
==
等于
if [ "$a" == "$b" ]
与=等价.
==比较操作符在双中括号对和单中括号对中的行为是不同的.
1 [[ $a == z* ]] # 如果$a以"z"开头(模式匹配)那么结果将为真
2 [[ $a == "z*" ]] # 如果$a与z*相等(就是字面意思完全一样), 那
么结果为真.
3
4 [ $a == z* ] # 文件扩展匹配(file globbing)和单词分割有
效.
5 [ "$a" == "z*" ] # 如果$a与z*相等(就是字面意思完全一样), 那
么结果为真.
6
7 # 感谢, Stephane Chazelas
!=
不等号
if [ "$a" != "$b" ]
这个操作符将在[[ ... ]]结构中使用模式匹配.
<
小于, 按照ASCII字符进行排序
if [[ "$a" < "$b" ]]
if [ "$a" \< "$b" ]
注意"<"使用在[ ]结构中的时候需要被转义.
>
大于, 按照ASCII字符进行排序
if [[ "$a" > "$b" ]]
if [ "$a" \> "$b" ]
注意">"使用在[ ]结构中的时候需要被转义.
参考例子 26-11, 这个例子展示了如何使用这个比较操作符.
-z
字符串为"null", 意思就是字符串长度为零
-n
字符串不为"null".
当-n使用在中括号中进行条件测试的时候, 必须要把字符串用双引号引用起
来. 如果采用了未引用的字符串来使用! -z, 甚至是在条件测试中括号(参
见例子 7-6)中只使用未引用的字符串的话, 一般也是可以工作的, 然而,
这是一种不安全的习惯. 习惯于使用引用的测试字符串才是正路.
----------------------------------------------------------------------------------------------------------------------------------------
使用cut从文件中提取内容:
test.c中有如下内容, 目的是提取红色的5这个字符,场景是这个5是一个结果,是动态的,打开这个文件的时间不同,可能会是7或者其他值
The paste command is the opposite of cut; it pastes multiple files together, separated (by default)
by tabs. This is not to be confused with the terms “cut” and “paste” when used in the context of a
graphical user environment (GUI). The paste command creates tabular data from multiple files, so
given three files it will put them together in three columns, the first from file1, the middle column
from file2, and the final column from file3-- 5. It can take as input as many files as you like.
-->cat test.c | grep file3 | cut -d ' ' -f 8 | cut -d '.' -f 1
执行这个命令就可以取出来这个结果当前值是5
解析:
cat test.c | grep file3
#打开test.c这个文件并找到包含file3字串的这一行
cat test.c | grep file3 | cut -d ' ' -f 8 |
#在找到的这一行中,以空格为分隔符(-d选项),找到第8个(-f选项),这样执行的结果是“5.”
cat test.c | grep file3 | cut -d ' ' -f 8 | cut -d '.' -f 1
#上一命令执行的结果不是我们要的,但已经很接近了,再执行一次cut, 以'.'为分隔符,选择第一个域,
结果就是5了
**************************************************************
**************************************************************
--------------------------------------------------------------------------------------------------------------------------------------------------------------